ruby-on-rails - ActiveRecord 连接需要重置?
问题描述
生产模式下的应用程序正在按预期返回内容。假设它正在连接到配置的数据库。文件database.yml
如下
default: &default
adapter: postgresql
user: deploy
password: 888xxx888xxx
schema_search_path: public
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5
timeout: 10000
development:
<<: *default
database: fort_development
<<: *default
database: fort_test
production:
<<: *default
database: fort_production
但是,当通过控制台连接到数据库时,无论是在开发中(数据库不存在)还是在生产中,控制台都连接到错误的数据库。它还引用了从 database.yml 文件中删除的用户名(应用程序随后重新启动)。
myapp
注意:曾经在 yml 文件中为该属性引用了该字符串schema_search_path
,但它是一个注释掉的行(无法确定它是否曾经被激活。'
> bundle exec rails c
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :user=>"deploy", :password=>"888xxx888xxx", :schema_search_path=>"public", :pool=>5, :timeout=>10000, :database=>"myapp", :username=>"deploy", :host=>"127.0.0.1"}
> bundle exec rails c production
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :user=>"deploy", :password=>"888xxx888xxx", :schema_search_path=>"public", :pool=>5, :timeout=>10000, :database=>"myapp", :username=>"deploy", :host=>"127.0.0.1"}
控制台和应用程序不同步。什么可以使控制台使用不同的值以及如何重置它以使用正确的配置数据?
解决方案
对于任何偶然发现这一点的人,rake 可以在另一个地方获取通过 ActiveRecord 连接的指令。
.rbenv-vars
应用程序目录中的此文件被错误地设置为:
DATABASE_URL=postgresql://deploy:PASSWORD@127.0.0.1/myapp
另一个潜在的问题来源(不清楚为什么文件在 yaml 中正确解析)是让 database.yml 文件仅引用生产环境
production:
adapter: postgresql
database: fort_production
password: [...]
pool: 5
schema_search_path: public
timeout: 10000
user: deploy
推荐阅读
- git - 文件权限在 git 分支之间共享
- react-native - 如何使用 react-navigation 和 react native 制作如图所示的标签栏?
- git - git reset --soft - 是回到 git checkout 点还是最后一个 git 合并点?
- c - 通过c输入sudo密码
- node.js - 节点文件系统
- ios - 可访问性:使用属性文本制作 UILabel 作为可访问性容器
- c# - 在带有命名空间的 asp.net 项目中的另一个 DLL 中调用方法
- android - 我想在 android 中使用 Intent 将所有详细信息传递给另一个活动,但我下面的代码会生成错误
- java - 如何在没有任何空间的情况下缩放活动以完全适合图像的数量
- ios - 定义领域数据库结构 (Swift)