【问题标题】:Rails 4 - how to use sqlite3 in development and PostgreSQL in production w/HerokuRails 4 - 如何在开发中使用 sqlite3 和在生产中使用 PostgreSQL w/Heroku
【发布时间】:2014-02-03 00:47:14
【问题描述】:

我正在尝试部署到 Heroku,但由于默认的 sqlite3 服务器仍然存在,所以无法部署。

检测到 Heroku 不支持的 sqlite3 gem。 https://devcenter.heroku.com/articles/sqlite3

在另一个使用 Rails 3.2.13 的教程中,我能够使用 sqlite3 作为开发数据库,​​使用 Postgres 作为生产数据库。 Gemfile 在 Rails 4 中看起来有所不同,但我已将其修改为:

group :development do
  # Use sqlite3 as the database for Active Record
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

然后我更改了我的 database.yml 文件,使生产部分看起来像这样:

production:
  adapter: postgresql
  database: my_production_database
  pool: 5
  timeout: 5000

然后我运行 bundle install 和 rake db:create 和 rake db:migrate 但我仍然无法推送到 Heroku。所以我尝试了rake db:drop 以及rake db:create 和rake db:migrate,但仍然收到相同的错误消息。

我错过了什么吗?我还需要做什么来确保将 Postgres 作为我的生产数据库并能够使用 Heroku?

【问题讨论】:

  • “根本不这样做”是一个答案吗?没有 ORM 将保护您免受数据库之间的差异、使用相同的数据库(和版本)进行开发和部署或准备遭受损失。
  • 感谢您的提示!我最初一直在使用不同的,因为这就是我在遵循的教程中设置的方式。我猜你不能相信所有作为教程发布的东西!

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


【解决方案1】:

尝试将其用于您的生产数据库

production:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: my_production_database
  pool: 5
  username:
  password:

您可以将用户名和密码留空

【讨论】:

  • 我想我找到了问题所在。我只是一个新手,忘记了在部署到heroku之前我必须先将我的更改提交到git。这次我能够成功部署到 Heroku,但现在我的样式都没有出现(我安装了引导程序)。
  • 好的。在您的控制台中,运行 bundle exec rake assets:precompile。然后运行 ​​git add public/assets -f。然后提交您的更改并重试。 devcenter.heroku.com/articles/rails-asset-pipeline
  • 还将这个 gem 'rails_12factor', '0.0.2' 添加到您的生产组
  • 我相信在 Heroku 上 database.yml 的生产部分被忽略了——它会根据您作为应用程序的一部分创建的用户、密码和数据库用自己的值替换值。跨度>
  • 我已经尝试过 bundle exec rake assets:precompile 以及将 rails_12factor 添加到我的 Gemfile 中,但它仍然无法正常工作。猜猜我会发一个新的帖子
【解决方案2】:

不要这样做。你只会在路上遇到问题。在生产和开发中使用相同的数据库。有很多资源可用于记录从 sqlite 到 postgres 数据库的切换。

花点时间切换。

看看这个 Rails Cast。

http://railscasts.com/episodes/342-migrating-to-postgresql?view=asciicast

【讨论】:

  • 感谢您的提示!我最初一直在使用不同的,因为这就是我在遵循的教程中设置的方式。我猜你不能相信所有作为教程发布的东西!
  • 这是一些教程中最大的缺陷之一。它对本教程“有效”,但是一旦你做了超出它的事情,你就会遇到麻烦。如果您正在关注 Michael Hartl Rails 教程,他会将其作为练习:ruby.railstutorial.org/chapters/…
  • 我最初的问题的答案是,在部署到 Heroku 之前我没有承诺 git,但我将其标记为答案,因为它似乎是对底层的“最佳实践”答案问题。
猜你喜欢
  • 2023-03-31
  • 2017-02-06
  • 2013-06-28
  • 2016-01-18
  • 2015-07-26
  • 2014-06-20
  • 2017-07-04
  • 1970-01-01
  • 2012-03-03
相关资源
最近更新 更多