2017-09-26 19 views
0

我有一個服務器與Rails 5.1,Phusion_Passenger和Nginx。Rails.application.database_configuration錯誤與Rails 5.1 + Nginx + Phusion_Passenger

當我啓動服務器只有Phusion_Passenger,一切都很好:

=============== Phusion Passenger Standalone web server started =============== 
PID file: /project/tmp/pids/passenger.3000.pid 
Log file: /project/log/passenger.3000.log 
Environment: development 
Accessible via: http://0.0.0.0:3000/ 

You can stop Phusion Passenger Standalone by pressing Ctrl-C. 
Problems? Check https://www.phusionpassenger.com/library/admin/standalone/troubleshooting/ 
=============================================================================== 
[ N 2017-09-26 15:13:06.4195 8753/T5 age/Cor/SecurityUpdateChecker.h:374 ]: Security update check: no update found (next check in 24 hours) 

當我嘗試啓動,並與Nginx的訪問同一個實例的覆蓋,我收到以下錯誤:

App 8129 stdout: 
App 8129 stdout: 
[ E 2017-09-26 15:06:26.4848 1774/T1l age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /project: An error occurred while starting up the preloader. 
    Error ID: e18b79ab 
    Error details saved to: /tmp/passenger-error-YkowRo.html 
    Message from application: Cannot load `Rails.application.database_configuration`: 
undefined method `[]' for nil:NilClass (NoMethodError) 
    (erb):13:in `<main>' 

看來,當你用Nginx加載rails應用程序時,它不能訪問「Rails」對象。

+0

您是否使用環境變量傳遞數據庫詳細信息?如果是,那麼你是否在你的nginx配置中指定了那些? –

+0

沒有東西被細化爲環境變量。股票標準config/database.yml文件。 – user1789782

回答

0

乘客在passenger.conf中沒有設置默認環境。增加了這個變量,它解決了這個問題。

passenger_app_env development; 
+0

注意這顯然只對開發是正確的。在生產中,你應該使用'production' env,它是nginx集成的默認值。 –