Rails:如何删除默认版本的 bundler?

SST*_*SST 26 rubygems ruby-on-rails bundler

我尝试更改默认捆绑版本,但它已更新为 2 个默认版本。如何修改为单一默认值?

$ gem list bundler

*** LOCAL GEMS ***

bundler (2.0.1, default: 1.16.6, default: 1.16.2)
Run Code Online (Sandbox Code Playgroud)

如果我执行 gem uninstall 不删除默认值,

$ gem uninstall bundler
Successfully uninstalled bundler-2.0.1


$ gem list bundle

*** LOCAL GEMS ***

bundler (default: 1.16.6, default: 1.16.2)
Run Code Online (Sandbox Code Playgroud)

如何将(如下所示)默认设置为单一版本?

bundler (2.0.1, default: 1.16.6)
Run Code Online (Sandbox Code Playgroud)

小智 27

我遇到了同样的问题,但版本较新

$ gem list bundler

*** LOCAL GEMS ***

bundler (default: 2.1.4, default: 2.1.2)
Run Code Online (Sandbox Code Playgroud)

但是按照这篇文章的指示安装了两个默认版本的 rake - 如何删除一个允许我删除一个。


您必须删除与要删除的默认 gem 对应的.gemspec文件。

所以首先,找到这些文件的位置。

# I'm running RVM to manage my Ruby versions

~/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/specifications/default/

-rw-r--r--   1 myuser  staff  10731 Dec 26 17:22 bundler-2.1.2.gemspec
-rw-r--r--   1 myuser  staff  15134 Jan  7 17:30 bundler-2.1.4.gemspec
Run Code Online (Sandbox Code Playgroud)

删除你不需要的那个。

$ rm ~/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/specifications/default/bundler-2.1.2.gemspec
Run Code Online (Sandbox Code Playgroud)

然后安装(或重新安装)要设置为默认值的 gem。

$ gem install bundler:2.1.4 --default

Successfully installed bundler-2.1.4 as a default gem
Run Code Online (Sandbox Code Playgroud)

最后,您将只安装您想要的版本。

$ gem list bundler

*** LOCAL GEMS ***

bundler (default: 2.1.4)
Run Code Online (Sandbox Code Playgroud)

  • 尝试了很多次,gem list bundler 和 gem info bundler 都说正确的版本,但是 `bundler --version` 打印旧版本,并且捆绑安装仍然不起作用。拔我的头发! (2认同)

yoh*_*nes 23

对于那些使用 rbenv 的人,假设您有两个默认版本

$ gem list | grep bundler
bundler (default: 2.1.4, default: 1.17.2)
Run Code Online (Sandbox Code Playgroud)

检查你的 gem 安装路径

$ gem environment
RubyGems Environment:
.
.
- INSTALLATION DIRECTORY: /home/yohanes/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
.
Run Code Online (Sandbox Code Playgroud)

转到specifications/default目录并查找 bundlers gemspec

$ cd /home/yohanes/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/specifications/default
$ ls -lah
total 200K
drwxr-xr-x 2 yohanes yohanes 4,0K Jun  1 10:05 .
drwxr-xr-x 3 yohanes yohanes  20K Jun  1 10:05 ..
.
.
-rw-r--r-- 1 yohanes yohanes  16K Jun  1 10:05 bundler-1.17.2.gemspec
-rw-r--r-- 1 yohanes yohanes  15K Jun  1 09:31 bundler-2.1.4.gemspec
.
.
Run Code Online (Sandbox Code Playgroud)

删除需要删除的版本

$ rm bundler-2.1.4.gemspec
Run Code Online (Sandbox Code Playgroud)

再检查一遍

$ gem list | grep bundler
bundler (default: 1.17.2)
$ gem list bundler

*** LOCAL GEMS ***

bundler (default: 1.17.2)
Run Code Online (Sandbox Code Playgroud)

但是,如果您检查捆绑版本,您仍然会默认获得已删除的版本

$ bundler -v
Bundler version 2.1.4
Run Code Online (Sandbox Code Playgroud)

所以我们必须通过重新安装所需的 bundler 版本来覆盖它

$ gem install bundler --version '1.17.2'
Successfully installed bundler-1.17.2
Parsing documentation for bundler-1.17.2
Done installing documentation for bundler after 1 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

然后,如果您再次检查,它将显示您所需的版本

$ bundle -v
Bundler version 1.17.2
Run Code Online (Sandbox Code Playgroud)

  • 这是有史以来最好的答案! (3认同)
  • 即使再次 `gem install bundler` 后,`bundle -v` 仍然显示错误的版本。有什么建议吗? (3认同)

小智 5

gem update --system

这个命令对我有用

运行后试试这个gem list bundler