【问题标题】:Could not find pg-0.16.0 in any of the sources (Bundler::GemNotFound) in Rspec after installing postgres安装 postgres 后,在 Rspec 的任何源 (Bundler::GemNotFound) 中都找不到 pg-0.16.0
【发布时间】:2013-08-03 11:08:51
【问题描述】:

我使用自制软件安装了 postgres,它运行良好 - 但现在 rspec 不会运行我的测试并抛出此错误:

Could not find pg-0.16.0 in any of the sources (Bundler::GemNotFound)

我的“gemfile”的相关部分

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

显然我想让它工作,但老实说,我更困惑为什么这首先会引发错误。 Rspec 在我的测试/开发环境中,而 postgres 仅在生产中 - 那么为什么 Rspec 关心(甚至知道!)关于 postgres?

【问题讨论】:

  • 如果您使用相同的数据库进行开发、测试和部署,您可以解决此问题并避免许多其他问题。数据库之间存在差异,没有 ORM 可以将您与之隔离。是的,SQLite 是 Rails 的默认设置,但这是一个愚蠢的默认设置,Rails 人员应该为这个决定感到羞耻。
  • @muistooshort,同意。我试图使用不同的数据库仅用于生产以推送到 heroku,但这是一个愚蠢的举动。暂时会坚持使用 sqlite,然后再改用 MySQL。

标签: ruby-on-rails postgresql rspec ruby-on-rails-3.2


【解决方案1】:

Bundler 在运行时会查看 Gemfile 中的所有 gem,因此无效的 gem 名称或版本将导致错误,无论它们指定用于什么环境。请参阅“常见问题解答:为什么 Bundler 会从 --without Groups 下载 Gems?”在http://bundler.io/rationale.html 了解基本原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 2018-04-08
    • 2012-04-19
    • 2015-03-04
    • 2014-07-11
    • 2012-06-08
    • 2019-11-16
    • 2014-06-05
    相关资源
    最近更新 更多