Heroku postgres不再覆盖config / database.yml Rails 4.1.4(以及其他问题)

时间:2014-11-17 21:12:03

标签: postgresql ruby-on-rails-4 heroku

我对RoR很新,而且我无法理解如何在我的Rails 4.1.4应用程序中正确设置和使用Heroku Postgres。我在Ubuntu 14.04.1 LTS上。

我希望有用于开发和测试的本地PostgreSQL数据库,以及用于生产的Heroku Postgres数据库。

这是我到目前为止所达到的目标:

  • 我按照heroku官方文档here
  • 设置了PostgreSQL
  • 我安装了pg gem
  • 我更改了config/database.yml文件:

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
      timeout: 5000
      username: franklin
      password:
    
    development:
      <<: *default
      database: myapp_development
    
    test:
      <<: *default
      database: myapp_test
    
    production:
      url: <%= ENV["DATABASE_URL"] %>
    

    我从here知道,Heroku不再为Rails 4.1.x应用程序覆盖config/database.yml,而且我应该(必须?)在生产条目中指定DATABASE_URL

  • 我运行rake db:create:all创建了我的本地开发和测试数据库,然后rake db:migrate

  • git commit更改,然后使用git push heroku master
  • 将我的应用推送到Heroku
  • 我跑了heroku run rake db:migrate并收到以下消息:Running rake db:migrate attached to terminal... up, run.1227(我不确定这意味着什么?)
  • 我终于跑了heroku restart

然后,当我连接到我的开发数据库时,我可以看到rake db:migrate命令创建的新表,以及我在localhost:3000中运行我的应用程序故意创建的新数据(表单提交) 。我得到了完全预期的行为。

但是当我连接到我的Heroku Postgres生产数据库时,应该由heroku run rake db:migrate命令创建的新表不存在。当我向不存在的表(表单提交)添加数据时,我的Heroku应用程序不会崩溃。

以下是我的问题:

  1. 我的生产条目是否已在config/database.yml
  2. 中正确配置
  3. 如何正确运行迁移到我的Heroku Postgres生产数据库?
  4. 如果不在表格中,我的Heroku应用程序中的数据会去哪里?
  5. 任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

您需要转到https://postgres.heroku.com/databases

找到您应用的数据库,您将找到适合您数据库的密钥。您可以将这些内容作为配置变量上传,然后将其加载到database.yml

查看figaro以便更轻松地处理配置变量。