【发布时间】:2015-01-14 22:00:53
【问题描述】:
我对 RoR 非常陌生,我无法理解如何正确设置 Heroku Postgres 并将其与我的 Rails 4.1.4 应用程序一起使用。我在 Ubuntu 14.04.1 LTS 上。
我想要本地 PostgreSQL 数据库用于开发和测试,以及 Heroku Postgres 数据库用于生产。
这是我到目前为止所达到的:
- 我按照heroku官方文档here设置PostgreSQL
- 我安装了
pggem -
我更改了我的
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 应用程序不会崩溃。
这是我的问题:
- 我的生产条目是否在
config/database.yml中正确配置? - 如何正确迁移到 Heroku Postgres 生产数据库?
- 如果我的 Heroku 应用程序中的数据不在表格中,它会去哪里?
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
看看这里:devcenter.heroku.com/changelog-items/426 你不需要设置 DATABASE_URL 因为它会被合并
-
但是,this dev article 表示您应该使用线程服务器(puma、unicorn 等)。
标签: postgresql ruby-on-rails-4 heroku