当您的Gemfile需要较旧版本的捆绑程序时,如何“捆绑安装”?


78

我在一个较旧的具有Gemfile的Rails项目中。我尝试将宝石添加到Gemfile中,bundle install但出现错误:

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.0) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.5)

This Gemfile requires a different version of Bundler.

它使用的Rails版本需要bundler〜> 1.0.0,但是我已经安装了1.1.5,并将其用于其他项目。通常我会使用,bundle exec ...但是由于我们正在谈论的是捆绑器,因此它要复杂得多。如何在我的Gemfile中添加gem并bundle install在使用所需的bundler版本时运行?


我想先卸载1.1.5捆绑软件。然后安装1.0.0。这将解决。也许有更好的解决方案?
Halfelf

Answers:


148

首先,您需要安装适当版本的捆绑程序:

% gem install bundler -v '~> 1.0.0'
Successfully installed bundler-1.0.22

然后强迫rubygems使用您想要的版本(请参阅此帖子):

% bundle _1.0.22_ install

为什么在Bundler文档中没有这个问题?!?谢谢,在浪费了我不愿意承认的时间之后,终于解释了我所需要的。
MikeSchinkel '16

2
这些天要使用确切的版本,您将需要使用gem install bundler -v '=1.16.0'
Nick Schwaderer '18

9
现在不工作。它不能强制RubyGems的使用哪个版本的bundle _1.0.22_ install规定
Alec.Zhou

2

错误消息In Gemfile: bundler (~> 1.16)有点不准确,因为版本号要求可能来自其他地方,例如.gemspec文件,这对我来说就是这种情况:

spec.add_development_dependency "bundler", "~> 1.16"

.gemspec文件中删除版本号为我解决了这个问题:

spec.add_development_dependency "bundler"

0

我在macOS Mojave上遇到了同样的问题。我安装了捆绑软件gem的其他版本,并卸载了当前版本。

gem install bundler -i '2.0.1'

gem uninstall bundler

然后,我可以选择要卸载的版本,然后选择要创建问题的版本。


不一定是推荐的方法。我会先尝试接受的答案,根据以后的版本,您可能还会有其他宝石,您可以单独运行它们。
Michael Elliott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.