[英]Passenger Ignoring RAILS_ENV
背景
我有一個包含各種變量的env文件,該變量取決於我的Rails應用程序,包括RAILS_ENV,該文件已初始化為在此文件中進行開發。 我還獲得了database.yml
文件,該文件定義了我的環境的數據庫連接(如下)。 當我運行rails控制台時,一切看起來都應該正確。 檢查Rails.configuration.database_configuration[Rails.env]
返回以下內容:
{"adapter"=>"postgresql",
"encoding"=>"utf8",
"database"=>"dev",
"username"=>"rails",
"password"=>"***",
"host"=>"localhost",
"pool"=>5,
"timeout"=>5000}
但是,當我嘗試訪問該應用程序時,出現502並記錄了以下錯誤:
機架應用程序對象中出現異常ActiveRecord :: NoDatabaseError(FATAL:數據庫“ prod”不存在。
顯然,錯誤消息是准確的,但不代表我期望的。
我假設這是旅客/阿帕奇問題,因為運行rails console一切都很好。
注意:我已經在其他帖子中看到了這一點,所以沒有-沒有DATABASE_URL
環境變量在來自database.yml
重載內容中浮動。
我嘗試過的
.bashrc
: 乘客應該為運行apache的用戶提供bashrc的源,而bashrc則被設置為提供相關的env文件。 /etc/sysconfig/httpd
:我已經嘗試過直接從Apache config手動獲取文件,並在腳本運行時通過將env轉儲到文件中驗證了正確的值並將其放入env中進行了驗證,但是這也不會改變損壞的行為。 database.yml的
development:
adapter: postgresql
encoding: utf8
database: dev
username: rails
password: <%= ENV['RAILS_DB_PWD'] %>
host: <%= ENV['RAILS_DB_HOST'] %>
pool: 5
timeout: 5000
# 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:
adapter: postgresql
encoding: utf8
database: test
username: rails
password: <%= ENV['RAILS_DB_PWD'] %>
host: <%= ENV['RAILS_DB_HOST'] %>
pool: 5
timeout: 5000
production:
adapter: postgresql
encoding: utf8
database: prod
username: rails
password: <%= ENV['RAILS_DB_PWD'] %>
host: <%= ENV['RAILS_DB_HOST'] %>
port: 5432
pool: 5
timeout: 5000
更好的方法是僅使用DATABASE_URL
env var。
如果同時設置了config / database.yml和
ENV['DATABASE_URL']
則Rails會將配置合並在一起。
Rails指南:配置數據庫
common: &common
adapter: postgresql
encoding: utf8
template: template0 # Required for UTF8 encoding
pool: 5
timeout: 5000
development:
<<: *common
database: dev
test:
<<: *common
database: test
production:
<<: *common
database: prod
我通常建議您避免在database.yml
指定數據庫用戶名和密碼。 使用ENV vars Luke! 當您處於中間狀態時,最好采用約定而不是配置方法,而不要引入單獨的var。
對於一個應用程序是否正確地將所有配置從代碼中分解出來的一個試金石測試是,是否可以在不損害任何憑證的情況下隨時將代碼庫設為開源。 https://12factor.net/config
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.