未为测试环境设置ENV变量

时间:2016-04-19 09:28:03

标签: ruby-on-rails ubuntu

我在database.yml中设置了这样的测试数据库:

test:
  adapter: postgresql
  encoding: unicode
  database: database_test
  host: localhost
  pool: 5
  username:  <%= ENV['PG_USERNAME']%>
  password: <%= ENV['PG_PASSWORD']%>

我使用spring gem来运行测试(虽然这并不重要,因为问题也没有使用它)

问题在于,每次运行bundle exec rspec spec/时,我都会收到错误no password supplied (PG::ConnectionBad)

/.bundle/ruby/2.3.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize': fe_sendauth: no password supplied (PG::ConnectionBad)

我需要手动将其更改为:

test:
  adapter: postgresql
  encoding: unicode
  database: database_test
  host: localhost
  pool: 5
  username:  postgres
  password: postgres

为了让它发挥作用。

我在~/.bashrc中设置了变量:

export PG_USERNAME="postgres"
export PG_PASSWORD="postgres"

奇怪的是,在development模式下,当我使用与test中相同的结构时,工作正常

development:
  adapter: postgresql
  encoding: unicode
  database: database_dev
  host: localhost
  pool: 5
  username:  <%= ENV['PG_USERNAME']%>
  password: <%= ENV['PG_PASSWORD']%>

我的test环境有什么问题以及如何修复它以便在开发模式下自动使用ENV['PG_USERNAME']

1 个答案:

答案 0 :(得分:0)

我在评论中提出了一个quickfix,但我建议使用优秀的dotenv gem进行配置加载,具体取决于您的配置。它会顺便解决你当前的问题。