gpt4 book ai didi

ruby-on-rails - ActiveRecord 尝试使用 rbenv 连接到错误的数据库

转载 作者:行者123 更新时间:2023-11-29 13:24:34 25 4
gpt4 key购买 nike

在站点根目录上执行获取请求时,/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)

它说数据库“y”不存在。首先,y 不是数据库,所以我知道它不存在。

其次,database.ymlydb 指定为应用程序应连接到的数据库 - 而不是 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 是问题发生的地方。当环境变量直接放在 database.yml 中时,服务器会按预期加载站点。

令人费解的是,从echo $Y_PG_DB,shell返回ydb,而不是y

最佳答案

开发工作顺利。甚至服务器上的 rails console production 也可以使用 app.get '/' 而没有数据库错误。然而,当通过浏览器发出请求时,一切都乱套了。

问题是 Phusion Passenger 在安装结束时给出的说明与 rbenv-vars 不完全兼容。

在 Passenger 安装结束时,系统会指示您将以下内容添加到 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 pointed out ,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

关于ruby-on-rails - ActiveRecord 尝试使用 rbenv 连接到错误的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36126293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com