【发布时间】:2018-04-04 20:35:34
【问题描述】:
我刚刚开始为客户端开发一个非常古老的遗留应用程序,它在 Ruby 1.9.3、Rails 3.2 上运行,并在生产服务器上使用 JRuby。 (升级服务器的障碍是保留在 1.9.3 上的一个因素。)
向 Gemfile 添加 gem,即使 gem 与 1.9.3 兼容,即使我添加了
ruby '1.9.3', :patchlevel => '551'
在 Gemfile 的顶部,Bundler 不断选择需要 Ruby 2.0 的其他 gem 的版本,因此更新失败。我怎样才能解决这个问题,而不必手动指定它失败的每个单个 gem 版本。
例如:
...
Using quiet_assets 1.1.0
Using rails 3.2.22
Using ref 2.0.0
Using rspec-rails 2.14.2
Fetching rspec_junit_formatter 0.3.0 (was 0.2.3)
Installing rspec_junit_formatter 0.3.0 (was 0.2.3)
Gem::InstallError: rspec_junit_formatter requires Ruby version >= 2.0.0.
An error occurred while installing rspec_junit_formatter (0.3.0), and Bundler cannot continue.
Make sure that `gem install rspec_junit_formatter -v '0.3.0'` succeeds before bundling.
我必须指定gem 'rspec_junit_formatter', '0.2.3'、以及之前的所有故障,才能使其正常工作。但这似乎违背了 Bundler 的目的。为什么 Bundler 在构建其依赖关系图时会忽略 Ruby 版本,即使我已经明确告诉它要使用哪个版本的 Ruby?
【问题讨论】:
-
2014 年的评论让我有点惊讶:github.com/bundler/bundler/issues/2965#issuecomment-39469017
-
????哇,这是令人惊讶,尤其是声称捆绑器构建失败的依赖关系图不是错误,因为它从未关注过过去的 Ruby 版本。我想这是一个很好的例子,说明不同的人对什么是错误有完全不同的想法。在我看来,它在执行其一项工作时总是无法处理某个用例这一事实并不能改变它未能完成其一项工作的事实。但后来……我猜他和我对工作的定义不同……
标签: ruby-on-rails ruby rubygems bundler