首页 > 解决方案 > Gem 安装错误版本的 bundler

问题描述

我在使用 Bundler 时遇到了问题(bundle cannot load such file bundler-1.17.1/exe/bundle),所以我删除了 Bundler 然后手动删除了所有 bundler 目录:

gem uninstall bundler -x

gem cleanup bundler

然后从以下位置删除rm -rf

~/.gem/ruby/2.5.1/gems/bundler-1.17.1

~/.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.17.1

~/.bundle

现在,我想用默认版本 1.17.1 重新安装 bundler。所以我尝试了gem install bundler

gem install bundler
Fetching: bundler-1.17.1.gem (100%)
Successfully installed bundler-1.17.1
Parsing documentation for bundler-1.17.1
Installing ri documentation for bundler-1.17.1
Done installing documentation for bundler after 3 seconds
1 gem installed

如果我尝试执行捆绑命令,我会收到以下错误:

bundle
Traceback (most recent call last):
    1: from /Users/robin/.gem/ruby/2.5.1/bin/bundle:23:in `<main>'
/Users/robin/.gem/ruby/2.5.1/bin/bundle:23:in `load': cannot load such file -- /Users/robin/.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.17.1/exe/bundle (LoadError)

我可以在中看到 bundler-1.17.1,~/.gem/ruby/2.5.1/gems/bundler-1.17.1但在.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.17.1. 所以我必须手动复制文件夹:

cp -R ~/.gem/ruby/2.5.1/gems/bundler-1.17.1 ~/.rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/bundler-1.17.1

但是现在,如果我尝试使用 bundle 命令,它可以工作,但我在第一行有这条消息:

Warning: the running version of Bundler (1.16.2) is older than the version that created the lockfile (1.16.6). We suggest you upgrade to the latest version of Bundler by running 'gem install bundler'.

我试图通过安装捆绑器,gem install bundler -v 1.17.1但我仍然有问题。

宝石列表输出:

gem list bundler

*** LOCAL GEMS ***
bundler (default: 1.17.1)
capistrano-bundler (1.4.0, 1.3.0)

我的配置:

macOS 10.13.6

ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

chruby
   ruby-2.5.0
 * ruby-2.5.1

rails -v
Rails 5.2.1

gem -v
2.7.7

编辑:

我忘了指定比gem pristine bundler不适用于捆绑器:

gem pristine bundler
Restoring gems to pristine condition...
Skipped bundler-1.17.1, it is a default gem

如果我尝试卸载 bundler 两次,我会收到以下消息:

gem uninstall bundler -x
ERROR:  While executing gem ... (Gem::InstallError)
    gem "bundler" cannot be uninstalled because it is a default gem

所以我不知道捆绑器是否真的第一次被卸载。

标签: ruby-on-railsrubyrubygemsbundlebundler

解决方案


推荐阅读