我正在创建一个带有.env
gem的postgresql数据库的rails应用程序。
这是我的.env
文件:
DATABASE_URL=dev
TEST_DATABASE_URL=test
PROD_DATABASE_URL=prod
DB_USERNAME=user1
这是我的config / database.yml
default: &default
adapter: postgresql
pool: 5
timeout: 5000
username: <%= ENV["DB_USERNAME"] %>
development:
<<: *default
database: <%= ENV["DATABASE_URL"] %>
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: <%= ENV["TEST_DATABASE_URL"] %>
production:
<<: *default
database: <%= ENV["PROD_DATABASE_URL"] %>
在我对应的.env
文件中,我指定了环境变量来替换值。当我尝试运行命令RAILS_ENV=development rake db:create
时,收到此错误:
** Invoke db:create (first_time)
** Invoke db:load_config (first_time)
** Execute db:load_config
rake aborted!
NoMethodError: undefined method `tr' for nil:NilClass
Did you mean? try
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:37:in `initialize'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:270:in `new'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:270:in `resolve_url_connection'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:258:in `resolve_hash_connection'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:215:in `resolve_connection'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:139:in `resolve'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:151:in `block in resolve_all'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:150:in `each'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:150:in `resolve_all'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:69:in `resolve'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/core.rb:46:in `configurations='
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/core.rb:48:in `block in <module:Core>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/concern.rb:120:in `class_eval'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/concern.rb:120:in `append_features'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/base.rb:284:in `include'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/base.rb:284:in `<class:Base>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/base.rb:269:in `<module:ActiveRecord>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/base.rb:26:in `<top (required)>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:8:in `require'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:8:in `<class:MySQLDatabaseTasks>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:3:in `<module:Tasks>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:2:in `<module:ActiveRecord>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:1:in `<top (required)>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/database_tasks.rb:50:in `require'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/database_tasks.rb:50:in `<module:DatabaseTasks>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/database_tasks.rb:37:in `<module:Tasks>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/database_tasks.rb:4:in `<module:ActiveRecord>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/tasks/database_tasks.rb:3:in `<top (required)>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:41:in `require'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:41:in `block (3 levels) in <class:Railtie>'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/Users/drubio/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:216:in `block in invoke_prerequisites'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `each'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `invoke_prerequisites'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:193:in `block in invoke_with_call_chain'
/Users/drubio/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/lib/rake/application.rb:77:in `run'
/Users/drubio/.rvm/gems/ruby-2.3.0/gems/rake-12.0.0/exe/rake:27:in `<top (required)>'
/Users/drubio/.rvm/gems/ruby-2.3.0/bin/rake:23:in `load'
/Users/drubio/.rvm/gems/ruby-2.3.0/bin/rake:23:in `<main>'
/Users/drubio/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/drubio/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:create => db:load_config
我已按照.env
的文档操作,并在我的Gemfile
顶部指定了宝石:
gem 'dotenv-rails', :groups => [:development, :test]
之前有没有人遇到过这个问题?
答案 0 :(得分:0)
您似乎为DATABASE_URL
env变量指定了不正确的值。 Rails以特殊方式处理它(参见文档http://edgeguides.rubyonrails.org/configuring.html#configuring-a-database)。
DATABASE_URL
的完整格式为postgresql://foo:bar@localhost:9000/foo_test?pool=5&timeout=3000
,可完全取代config/database.yml
。
现在,您可以将DATABASE_URL=dev
重命名为更加自定义的内容,例如DB_NAME=dev