1

每当我运行spork时,我都会收到以下错误:

You have already activated spork 0.9.0.rc8, but your Gemfile requires spork 0.8.5. Consider using bundle exec. (Gem::LoadError)

我的宝石文件:

group :development, :test do
    gem "rspec"
    gem "rspec-rails"
    gem "factory_girl_rails"
    gem 'spork' 
    gem 'webrat'
    gem 'awesome_print'

    gem 'vcr'
    gem 'fakeweb'
end

我已经跑了bundle updategem update甚至gem update --system,但我仍然看到这个错误。运行bundle exec spork有效,但我想知道为什么spork不运行以及如何解决此问题。

4

2 回答 2

0

也许你的问题已经解决了(我会假设),但最近几天我遇到了类似的问题,并找到了这个错误的原因。它与使用 bundler 时所有需要的 gem 的版本控制有关。当只spork提供“”时,它RubyGems会被激活并寻找合适的版本。但这会绕过Gemfile捆绑器将使用的指定版本。只有当使用“ bundle exec spork”时,bundler 才能从Gemfile. 在您的情况下,“ spork”指向已安装的版本为“ 0.9.0”的 gem,而“ bundle exec spork”使用“ 0.8.5”。有一个可用的标志(“bundle exec --binstubs”)创建一个“bin“文件夹(> = bundler 1.0)并将Gemfile指定的所有可执行文件放入其中。而不是“bundle exec spork”,写“ bin/spork”是有效的。

搜索Yehuda Katz的“Gem Versioning and Bundler: Doing it Right” ,它更详细地解释了一切,对我帮助很大。

于 2012-01-24T22:51:50.807 回答
0

在您的 Gemfile 中,您可以指定:

gem 'spork', :version => 0.8.5

此外,您可能想删除较新的 spork:

gem uninstall spork -v=0.9.0.rc8
于 2012-03-19T07:27:37.457 回答