在新的rails 3.2应用程序中捆绑版本的rspec和黄瓜宝石

时间:2013-02-04 09:58:18

标签: ruby-on-rails-3 rspec cucumber bundler

我遇到了捆绑在rails应用程序中的黄瓜和rspec gems的问题。

这是我的Gemfile在添加了RSpec支持的新Rails 3.2.11应用程序中的样子:

source 'https://rubygems.org'
gem 'rails', '3.2.11'
gem 'sqlite3'
gem 'jquery-rails'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

group :test do
  gem 'rspec-rails'
end

运行bundle后,Gemfile.lock报告正在使用rspec 2.12.2(截至撰写本文时,最新版本的gem)。

但我也想使用黄瓜,所以在修改bundle update之后运行Gemfile就像这样:

group :test do
  gem 'rspec-rails'
  gem 'cucumber-rails'
end

令我惊讶的是,捆绑的rspec现在是版本2.0.1,绝对不酷。

事实上,这在运行规范时会造成各种错误,我花了一段时间才发现它们是旧的rspec错误,很久以前就修复了。

我可以强制捆绑商使用最新的宝石:

group :test do
  gem 'rspec-rails', '>= 2.12.0'
  gem 'cucumber-rails'
end

但我不高兴,因为我不明白:

  1. 如果我做错了,
  2. 如果我应用的修复将导致其他问题
  3. 如果有办法预测此行为
  4. 任何见解?

1 个答案:

答案 0 :(得分:0)

根据https://github.com/cucumber/cucumber-rails/blob/master/cucumber-rails.gemspec#L22,cucumber-rails取决于'rspec-rails','〜> 2.10.1'(表示> = 2.10.1和< 2.11)。如果任何其他上游依赖依赖于rspec的版本< 2.10.1或> = 2.11,bundler应该引发错误,所以我无法理解这是怎么发生的。

另外,您应该在:development:test组中包含rspec-rails(每https://github.com/rspec/rspec-rails#configure个)。