【问题标题】:Using Sqlite3 test database and Postgres dev/production database in Rails在 Rails 中使用 Sqlite3 测试数据库和 Postgres 开发/生产数据库
【发布时间】:2013-06-28 22:23:28
【问题描述】:

我目前有一个 Rails 项目,我将其部署到使用 postgres 数据库的生产服务器上。我在 Windows 中开发我的 rails 项目,这意味着如果我想在本地进行测试,我必须将我的 database.yml 文件中的所有数据库从 postgres 更改为 sqlite3(因为设置 Windows 以运行 postgres 服务器似乎是痛苦)。

我想要做的是像这样格式化我的 database.yml:

development:
  adapter: postgresql
  encoding: utf8
  database: <%= begin IO.read("/home/www-data/.db/.dev_name") rescue "" end %>
  pool: 5
  username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %>
  password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %>

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  encoding: utf8
  database: <%= begin IO.read("/home/www-data/.db/.prod_name") rescue "" end %>
  pool: 5
  username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %>
  password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %>

这样我可以在本地运行 rails s -e test 并使用 sqlite3 数据库进行测试,但是当我部署到我的开发和生产服务器时,我可以使用 postgres。

我遇到的问题是,通过上面显示的对我的 database.yml 的更改,当我在本地运行 rails s -e test 时,我收到一条错误消息,说 rails 找不到 pg gem,这似乎暗示它仍然存在尝试使用开发服务器或生产服务器。

【问题讨论】:

  • 在 Windows 中设置 Postgres 一点也不痛苦。使用 SQLite 进行开发,但在生产中使用 Postgres,现在这很痛苦,而且很大。我建议对两者使用相同的 RDBMS。
  • 对我来说开发一个并切换到另一个非常容易;只需对我的 database.yml 进行一些更改并将“gem 'pg'”添加到我的 gemfile 中。我真正想要的是一种解决方案,让我不必在每次部署时都重复进行这些更改。
  • 这一切都很好 - 直到它不是。有些细微的差异可能会破坏您的代码或稍微改变行为,而您甚至都没有意识到(直到有人抱怨)。 Like in this related question.

标签: ruby-on-rails database ruby-on-rails-3 sqlite rails-postgresql


【解决方案1】:

确认所有警告后,问题的答案是使用group in your Gemfile like

gem 'pg', group: [:development, :production]
gem 'sqlite3', group: :test

【讨论】:

  • 正是我一直在寻找的!非常感谢
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 2021-09-16
  • 1970-01-01
  • 2012-04-15
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
相关资源
最近更新 更多