Ruby on rails连接到右侧Postgres DB

时间:2018-05-24 11:27:54

标签: ruby-on-rails postgresql

我使用RoR + Postgresql开发了一个网站,使用Git将其迁移到Heroku。一切顺利。

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

但是,我现在在本地有4个数据库:

myapp myapp_test myapp_development myapp_production

在本地测试我的应用时,事实证明它正在与myapp_development进行通信。

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

如何指示RoR使用数据库myapp

2 个答案:

答案 0 :(得分:0)

如果我理解你是对的 - 我可以提供下一个解决方案。 以下是 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

我希望它会对你有所帮助。

答案 1 :(得分:0)

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

ENV['DATABASE_URL']是一个env var,它在shell,操作系统中设置,或者在使用该进程时设置。

有关将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

ENV['DATABASE_URL']中的值与来自config/database.yml的值合并,但ENV['DATABASE_URL']具有优先权。

友情提示:

  • 只需在config/database.yml中设置最低限度 - 出于安全原因,应该通过ENV['DATABASE_URL']设置所有内容,例如用户名,密码等,以避免开发者大战。