/log/production.log
在网站根目录上执行获取请求时遇到错误:
I, [2016-03-21T02:21:38.485274 #12750] INFO -- :
Started GET "/" for 174.xx.xxx.xxx at 2016-03-21 02:21:38 -0600
F, [2016-03-21T02:21:38.493250 #12750] FATAL -- :
ActiveRecord::NoDatabaseError (FATAL: database "y" does not exist)
它说database "y" does not exist
。首先,y
它不是数据库,所以我知道它不存在。
其次,将应用程序应连接的数据库database.yml
指定ydb
为-not y
。
config / database.yml:
production:
adapter: postgresql
encoding: utf8
host: <%= ENV['Y_PG_HOST'] %>
database: <%= ENV['Y_PG_DB'] %>
username: <%= ENV['Y_PG_USER'] %>
password: <%= ENV['Y_PG_PASS'] %>
使用rbenv声明环境变量:
.rbenv-vars
Y_PG_HOST=localhost
Y_PG_DB=ydb
Y_PG_USER=y
Y_PG_PASS=*********
更新
感谢@Meshpi,看来这rbenv
是问题所在。将env var直接放置在中时database.yml
,服务器将按预期加载站点。
令人费解的是,echo $Y_PG_DB
shell从中返回ydb
,而不是y
。
开发工作正常。即使rails console production
在服务器app.get '/'
上也没有数据库错误。但是,当通过浏览器发出请求时,一切都变得混乱了。
问题在于,Phusion Passenger在安装结束时给出的说明与rbenv-vars不完全兼容。
在“乘客”安装结束时,系统指示您将以下内容添加到nginx.conf
:
passenger_root /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-5.0.26;
passenger_ruby /home/user/.rbenv/versions/2.3.0/bin/ruby;
但是,如@mislav所指出的那样,Ruby脚本将直接旋转ruby进程,而不是通过rbenv。
为了解决这个问题,需要输入的nginx.conf
是:
passenger_root /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-5.0.26;
passenger_ruby /home/user/.rbenv/shims/ruby;
希望这可以帮助另一个毫无戒心的人:D
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句