当您的 Gemfile 需要旧版本的捆绑器时如何“捆绑安装”?

问题描述 投票:0回答:5

我在一个有 Gemfile 的旧 Rails 项目中。我试图将一个 gem 添加到 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

ruby-on-rails ruby bundler
5个回答
205
投票

首先你需要安装合适版本的bundler:

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

然后强制 rubygems 使用你想要的版本(见这篇文章):

% bundle _1.0.22_ install

8
投票

这是我必须做的才能让它与以前版本 (2.2.11) 的捆绑器一起安装:

gem install bundler:2.2.11
bundle _2.2.11_ install

4
投票

错误消息

In Gemfile: bundler (~> 1.16)
有点不准确,因为版本号要求可以来自其他地方,例如
.gemspec
文件,我就是这样:

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

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

spec.add_development_dependency "bundler"

3
投票

我在 macOS Mojave 上遇到了同样的问题。我安装了不同版本的 bundler gem 并卸载了当前版本。

gem install bundler -i '2.0.1'

gem uninstall bundler

然后让我选择要卸载的版本,然后我选择造成问题的版本。


0
投票

如果您使用

rvm
来管理您的 ruby 版本,请考虑为项目使用 gemsets。这样你就可以安装所需的特定版本的捆绑器,而不必每次都指定版本。

您可以通过在您的项目目录中运行

gemset
来确认您的
rvm info
已加载。

现在您可以通过

gem install bundler -v '~> <VERSION>'
安装您想要的捆绑器版本。下次您需要使用捆绑器时,只需运行
bundle
.

© www.soinside.com 2019 - 2024. All rights reserved.