【问题标题】:Bundled versions of rspec and cucumber gems in a new rails 3.2 app在新的 rails 3.2 应用程序中捆绑了 rspec 和 cucumber gems 版本
【发布时间】:2023-03-12 13:57:02
【问题描述】:

我在使用 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

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

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

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

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

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

我可以强制 bundler 使用最新的 gem:

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

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

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

有什么见解吗?

【问题讨论】:

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


    【解决方案1】:

    根据https://github.com/cucumber/cucumber-rails/blob/master/cucumber-rails.gemspec#L22,cucumber-rails 依赖于 'rspec-rails'、'~> 2.10.1'(这意味着 >= 2.10.1 和 = 2.11 的版本,bundler 应该会引发错误,所以我不明白这是怎么发生的。

    顺便说一句,您应该在:development:test 组中包含rspec-rails(根据https://github.com/rspec/rspec-rails#configure)。

    【讨论】:

    • 我不在 cucumber-rails/master 上,我使用的是最新的 gem,它是 1.3.0。尽管如此,它的 gemspec 还是说'rspec-rails','~> 2.7.0',所以是的,为什么捆绑器不抱怨。我已经在一个新的 rvm 环境(mri 1.9.3-p327 和专用 gemset)中用另一个新的 rails 应用程序重现了这个问题,其中 cucumber-rails 和 rspec-rails 都在一个 :test AND :development 组中。 Bundler 安装 cucumber-rails 1.3.0 和 rspec 2.0.1 ......我可以上传任何可能有帮助的东西吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多