Ruby on rails KeyError:无法加载“Rails.application.database”配置:“找不到键:”;DB“环境”POSTGRESQL“用户”;

Ruby on rails KeyError:无法加载“Rails.application.database”配置:“找不到键:”;DB“环境”POSTGRESQL“用户”;,ruby-on-rails,rubygems,Ruby On Rails,Rubygems,因此,我一直在到处寻找,试图找到一个解决这个问题的办法,但到目前为止,我没有运气。我是RubyonRails,所以我可能会错过一些基本的东西,或者在错误的地方寻找解决方案,所以我想我应该问问。我有一个rails API,我从我的组织中派生出来,我想在本地运行它。我被困在终点站的这条线路上 bundle exec rake create:db 我真的不知道该怎么办:/如果这个问题已经被回答了,就告诉我,我会去解决的!多谢各位 Admins-MacBook-Pro:environments n

因此,我一直在到处寻找,试图找到一个解决这个问题的办法,但到目前为止,我没有运气。我是RubyonRails,所以我可能会错过一些基本的东西,或者在错误的地方寻找解决方案,所以我想我应该问问。我有一个rails API,我从我的组织中派生出来,我想在本地运行它。我被困在终点站的这条线路上

bundle exec rake create:db
我真的不知道该怎么办:/如果这个问题已经被回答了,就告诉我,我会去解决的!多谢各位



Admins-MacBook-Pro:environments nathanshanko$ bundle exec rake db:create
(in /Users/nathanshanko/Desktop/git-repos/voke_api)
rake aborted!
KeyError: Cannot load `Rails.application.database_configuration`:
key not found: "DB_ENV_POSTGRESQL_USER"
(erb):7:in `fetch'
(erb):7:in `'
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/configuration.rb:104:in `database_configuration'
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:41:in `block (3 levels) in '
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `'
KeyError: key not found: "DB_ENV_POSTGRESQL_USER"
(erb):7:in `fetch'
(erb):7:in `'
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/configuration.rb:104:in `database_configuration'
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:41:in `block (3 levels) in '
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/nathanshanko/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `'
Tasks: TOP => db:create => db:load_config
(See full trace by running task with --trace)

这是我的database.yml文件

 common: &common
 adapter: postgresql
 encoding: utf8
reconnect: true
pool: <%= ENV['DB_ENV_POSTGRESQL_POOL'] || 5 %>
database: <%= ENV['DB_ENV_POSTGRESQL_DB'] || 'voke_api' %>
username: <%= ENV.fetch('DB_ENV_POSTGRESQL_USER') %>
password: <%= ENV['DB_ENV_POSTGRESQL_PASS'] %>
host: <%= ENV.fetch('DB_PORT_5432_TCP_ADDR') %>
port: <%= ENV['DB_PORT_5432_TCP_PORT'] %>

 development:
 <<: *common


production:
<<: *common



 staging:
  <<: *common

  test:
   <<: *common
common:&common
适配器:postgresql
编码:utf8
重新连接:正确
游泳池:
数据库:
用户名:
密码:
主持人:
端口:
发展:

听起来您缺少了一些定义数据库凭据的环境变量。您需要设置这些文件(通过命令行或类似于
.env
application.yml
文件的文件进行设置,具体取决于您的项目设置)


您在
DB\u ENV\u POSTGRESQL\u USER
上遇到的错误是由于
ENV.fetch
导致的,如果找不到密钥,则会引发一个
索引器
。您可能还缺少其他环境变量,但是
env['xyz']
将自动失败而不会抛出任何错误。

您是否有
config/database.yml
文件是的。这就是它的样子,我将它添加为一个更新。这是正确的<代码>环境提取
应与默认值或故障保护一起使用。例如:
ENV.fetch('DB|ENV|POSTGRESQL_USER','postgres')
或添加一条未找到它的消息:
ENV.fetch('DB|ENV|POSTGRESQL|USER'){key | put“ENV var{key}未找到”}