我正在尝试使用https://github.com/WeAreFarmGeek/diplomat
根据他们的README说明,我已经像我这样调整了我的database.yml:
<% if Rails.env.production? %>
production:
adapter: postgresql
encoding: unicode
host: <%= Diplomat::Service.get('postgres').Address %>
database: <%= Diplomat::Kv.get('project/db/name') %>
pool: 5
username: <%= Diplomat::Kv.get('project/db/user') %>
password: <%= Diplomat::Kv.get('project/db/pass') %>
port: <%= Diplomat::Service.get('postgres').ServicePort %>
<% end %>
使用RAILS_ENV=production rails c
运行时,我可以正常连接到数据库。但是,当应用程序以乘客启动时,似乎这些值为空,我收到错误:
ActionView::Template::Error (No connection pool with 'primary' found.)
我认为乘客对database.yml很聪明?
我怀疑是对数据库.yml的ERB模板并不是真的 除了明确从nginx配置传递的ENV变量之外的工作。