我在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']
?