【问题标题】:Rails staging server using old databse connection info使用旧数据库连接信息的 Rails 登台服务器
【发布时间】:2021-02-27 07:27:46
【问题描述】:

我在 Rails 服务器上使用 localhost postgres db,最近更新了我的 databse.yaml 文件以指向 rds,但我发现我的服务器仍在将数据保存到旧数据库 ie.localhost 而不是 rds。

我所做的所有更改都在Rails.configuration.database_configuration 中可用,但是当我检查ActiveRecord::Base.connection.raw_connection.conninfo_hash 时,它显示的是我的旧数据库而不是新数据库。

我尝试将 db name 设置为 nil,但 ActiveRecord::Base.connection.raw_connection.conninfo_hash 中仍未显示此更改,因此我的服务器似乎没有使用我对 databse.yaml 的新更改

在本地,当我尝试在暂存环境中运行应用程序时,它正确地使用了新的数据库信息,但它没有在我的远程暂存服务器中使用新的数据库信息。

我尝试使用 cap staging deploy:restart 重新启动 rails 服务器,重新启动我的 aws ec2 实例但仍然没有成功

使用 capistrano 将应用部署到远程服务器

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  username: postgres
  password:
# socket: /var/run/mysqld/mysqld.sock

development:
  <<: *default
  database: JandR_development


production:
  <<: *default
  database: qwerty
  username: asdfg
  password: zxcv

staging:
  adapter: postgresql
  encoding: utf8
  pool: 5
  database: <%= Rails.application.credentials.dig(:staging_db, :database) %>
  username: <%= Rails.application.credentials.dig(:staging_db, :username) %>
  password: <%= Rails.application.credentials.dig(:staging_db, :password) %>
  host: <%= Rails.application.credentials.dig(:staging_db, :host) %>
  port: 5432




old db config
    staging:
  <<: *default
  database: dbname same as new db name
  username: username same as new username
  password: password same as new password

我的 capistrano 暂存配置文件只有以下行处于活动状态

server 'my_server_ip', user: 'deploy', roles: %w{app db web}

【问题讨论】:

  • 您的旧数据库配置是什么?您的暂存 capistrano 配置是什么?
  • @eux 我添加了旧的数据库配置,上限暂存详细信息
  • 只要确定:您是否在 capistrano 配置文件中 set :rails_env, 'staging''?您是否在登台服务器控制台上检查了Rails.env
  • 我使用 sudopassenger-status 检查了我在服务器中的环境,它似乎表明我在生产环境中。但服务器仍在使用我在 databse.yaml 文件中提到的暂存密钥中的 db 详细信息
  • 很奇怪。它在本地工作,因此在远程服务器上应该有问题。如果没有其他方法,您可以尝试部署到新服务器。

标签: ruby-on-rails postgresql capistrano passenger


【解决方案1】:

最初我在服务器项目根目录的.rbenv-vars 文件中设置了DATABSE_URL。我使用grep -inr "DATABASE_URL"home/username~/ 文件夹中找到了这个环境变量。更新 .rbenv-vars 中的 DATABSE_URL 为我解决了这个问题。实际上我忘记了我在服务器中完成的这个设置 参考:定位env文件位置https://unix.stackexchange.com/a/823/241745

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多