Ruby on rails连接到右边的Postgres数据库



我使用RoR+Postgresql开发了一个网站,并使用Git将其迁移到Heroku。一切都很好。

然后我将网站和数据库从Heroku导入到本地(在另一台计算机上)。一切都很顺利。

然而,我现在在本地有4个数据库:

myappmyapp_testmyapp_developmentmyapp_production

在本地测试我的应用程序时,发现它正在与myapp_development通信。

但我所有的数据都在数据库myapp中。

如何指示RoR使用DBmyapp

如果我理解正确,我可以提供下一个解决方案。以下是config/database.yml的示例

login: &login
adapter: postgresql
encoding: utf8
host: localhost
username: user_name
password: password
development:
<<: *login
database: db_name_development
test:
<<: *login
database: db_name_test
production:
<<: *login
database: db_name_production

尝试替换:

development:
<<: *login
database: db_name_development

带有:

development:
<<: *login
database: myapp_development

我希望它能帮助你。

Rails使用两个来源的数据库配置——ENV['DATABASE_URL']config/database.yml

ENV['DATABASE_URL']是在shell、操作系统或调用进程时设置的env变量。

例如,将ENV['DATABASE_URL']设置为:

postgresql://localhost/myapp

将通过postgres连接到正确的数据库。这就是Heroku设置生产应用程序连接到哪个数据库的方式。

config/database.yml只是一个YAML文件,在设置数据库时由ActiveRecord读取。它包含散列的散列-使用哪个密钥由Rails.env(通过ENV['RAILS_ENV']设置)决定。

common: &common
adapter: postgresql
encoding: utf8
host: localhost
development:
<<: *common # this is YAML syntax to merge this hash with &common
database: myapp

CCD_ 14中的值与CCD_ 15中的值合并,但CCD_。

一个友好的提示:

  • 只需在config/database.yml中设置最低限度-出于安全考虑和避免开发人员战争,用户名、密码等所有内容都应通过ENV['DATABASE_URL']设置

最新更新