如何将安装 gemfile 与特定版本的 bundler 捆绑在一起

Dav*_*mar 10 ruby dependencies ruby-on-rails bundler

我正在尝试捆绑安装一个运行gem 'rails', '4.2.0'. 运行Bundle install,我得到:

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 4.2.0) was resolved to 4.2.0, which depends on
      bundler (>= 1.3.0, < 2.0)

  Current Bundler version:
    bundler (2.1.4)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

Could not find gem 'bundler (>= 1.3.0, < 2.0)', which is required by gem 'rails (= 4.2.0)', in any of the sources.
Run Code Online (Sandbox Code Playgroud)

因此,我然后尝试安装 bundler v 1.3.0 以成功捆绑此 gemfile: gem install bundler -v 1.3.0

gem list bundler shows me that I successfully installed bundler at v 1.3.0
Run Code Online (Sandbox Code Playgroud)

然后当尝试像这样使用 v 1.3.0 捆绑安装时bundle _1.3.0_ install,我得到Could not find command "_1.3.0_".

如何使用特定版本的 bundler 成功运行 bundle install ?

小智 13

基本上,您需要:

  1. 安装在本地机器上的 Bundler (>= 1.3.0, < 2.0)。
  2. 能够运行该 Bundler 版本。
  3. 运行该 Bundler 版本以安装您的应用程序所需的其他 gem(捆绑安装)。

首先,检查您是否在本地机器上成功安装了 Bundler (>= 1.3.0, < 2.0):

$ gem list bundler 
Run Code Online (Sandbox Code Playgroud)

你应该看到:

*** LOCAL GEMS ***
bundler (2.1.4, 1.17.3, 1.3.0)
Run Code Online (Sandbox Code Playgroud)

如果没有,请安装它:

$ gem install bundler -v "<2" -N
# Install lasted bundler below version 2
# -N: No document
Run Code Online (Sandbox Code Playgroud)

其次,检查您是否可以运行该 Bundler 版本:

$ bundle _1.17.3_ -v
Run Code Online (Sandbox Code Playgroud)

你应该看到:

Bundler version 1.17.3
Run Code Online (Sandbox Code Playgroud)

如果您安装了 Bundler 1.17.3 但无法运行“bundle 1.17.3 -v”,则您的 RubyGems gem 有问题。检查您是否安装了更新版本(最新版本为 3.1.3):

$ gem -v
Run Code Online (Sandbox Code Playgroud)

尝试更新 RubyGems gem,因为它可以帮助您运行特定的 gem 版本:

$ gem update --system
Run Code Online (Sandbox Code Playgroud)

你应该看到:

Updating rubygems-update
...
Installing RubyGems 3.1.3
Successfully built RubyGem
    Name: bundler
    Version: 2.1.4
    File: bundler-2.1.4.gem
Bundler 2.1.4 installed
RubyGems 3.1.3 installed
Regenerating binstubs
...
------------------------------------------------------------------------------
RubyGems installed the following executables:
    /home/lqt/.rbenv/versions/2.7.1/bin/gem
    /home/lqt/.rbenv/versions/2.7.1/bin/bundle
...
RubyGems system software updated
Run Code Online (Sandbox Code Playgroud)

再次检查您是否可以运行特定的 Bundler 版本:

$ bundle _1.17.3_ -v
Run Code Online (Sandbox Code Playgroud)

如果你看到:

Bundler version 1.17.3
Run Code Online (Sandbox Code Playgroud)

然后,第 3 步,只需运行 Bundler 1.17.3 即可安装其他 gem:

$ bundle _1.17.3_ install
Run Code Online (Sandbox Code Playgroud)


小智 3

您可以通过以下方式安装捆绑程序版本 1.3:

gem install bundler -v 1.3
Run Code Online (Sandbox Code Playgroud)

然后使用该特定版本来安装 gem:

bundle _1.3.0_ [install]
Run Code Online (Sandbox Code Playgroud)

希望有帮助!