我使用RoR+Postgresql开发了一个网站,并使用Git将其迁移到Heroku。一切都很好。
然后我将网站和数据库从Heroku导入到本地(在另一台计算机上)。一切都很顺利。
然而,我现在在本地有4个数据库:
myapp
myapp_test
myapp_development
myapp_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']
设置