0

我在使用 rails 应用程序中捆绑的 cucumber 和 rspec gem 时遇到问题。

这是我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

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

但我也想用黄瓜,所以我bundle update修改后运行Gemfile如下:

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

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

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

我可以强制捆绑器使用最新的 gem:

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

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

  1. 如果我一开始做错了什么
  2. 如果我应用的修复程序会导致其他问题
  3. 如果有办法预测这种行为

有什么见解吗?

4

1 回答 1

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)。

于 2013-02-04T15:22:33.880 回答