当我执行以下操作时:
rake db:drop
rake db:create
rake db:migrate
rake db:seed这是我得到的:
rake aborted!
no implicit conversion of nil into string
app/mailers/base_mailer.rb:47:in '[]'
app/mailers/base_mailer.rb:47:in 'chimp_mail'我认为这与我的.env文件中的mailchimp变量有关。我如何将这些变量直接传递给bash?
发布于 2014-03-14 21:03:50
增强版
只有在您的环境(OS)中有可用的ENV variables时,才能使用它们。毕竟,它们被称为环境变量:
操作系统(Linux、Mac、Windows)提供设置本地环境变量的机制,Heroku和其他部署平台也是如此。这里我们展示了如何在Unix shell中设置本地环境变量。我们还展示了在没有Unix shell的应用程序中设置环境变量的两种替代方法
我认为您的问题可能是您没有将环境变量设置为Rails应用程序可以在后端访问它们的方式
费加罗
我会尝试使用Figaro
这是一个gem,它允许您创建和定义任意数量的ENV变量,并在您的开发环境中访问它们。我将在使用Figaro创建的application.yml文件中设置环境变量,并再次尝试运行db:seed命令
发布于 2014-03-16 03:00:01
我应该提到的拼图的关键部分是,我使用的是foreman。因此,我的问题的解决方案是运行"foreman rake db:reset“。
发布于 2020-08-07 14:45:02
在使用Docker开发Rails Docker 6应用程序时,我遇到了这个问题。
问题是我将数据库连接字符串修改为config/database.yml文件中的环境变量:
default: &default
adapter: postgresql
encoding: unicode
database: <%= ENV['DATABASE_NAME'] %>
username: <%= ENV['DATABASE_USER'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
host: <%= ENV['DATABASE_HOST'] %>
port: <%= ENV['DATABASE_PORT'] %>要在我的docker-compose.yml文件中使用它,然后将数据库环境变量的值放在应用程序根目录下的.env文件中:
DATABASE_USER=my_username
DATABASE_PASSWORD=12345678
DATABASE_NAME=my_app_development
DATABASE_HOST=localhost
DATABASE_PORT=5432
RAILS_ENV=development
RACK_ENV=development但是,Rails本身并不支持从.env文件中读取环境变量,因此无法读取环境变量值,因此在我运行rails db:drop命令时抛出了一个错误:
Dropped database 'my_app_development'
no implicit conversion of nil into String
Couldn't drop database ''
rails aborted!
TypeError: no implicit conversion of nil into String这里是我如何解决它的
将dotenv-rails gem添加到应用程序Gemfile中
gem 'dotenv-rails'从控制台将dotenv-rails gem安装到应用程序根目录:
bundle install再次尝试运行所需的数据库命令。对我来说是这样的:
rails db:drop这一次它应该可以很好地工作:
Dropped database 'my_app_development'
Dropped database 'my_app_development'就这样。
我希望这对有帮助
https://stackoverflow.com/questions/22402143
复制相似问题