簡體   English   中英

Rails:如何刪除默認版本的 bundler?

[英]Rails: How can I remove default version of bundler?

我嘗試更改默認捆綁版本,但它已更新為 2 個默認版本。 如何修改為單一默認值?

$ gem list bundler

*** LOCAL GEMS ***

bundler (2.0.1, default: 1.16.6, default: 1.16.2)

如果我執行 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)

如何將(如下所示)默認設置為單一版本?

bundler (2.0.1, default: 1.16.6)

我遇到了同樣的問題,但版本較新

$ gem list bundler

*** LOCAL GEMS ***

bundler (default: 2.1.4, default: 2.1.2)

但是按照這篇文章的指示安裝了兩個默認版本的 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

刪除你不需要的那個。

$ rm ~/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/specifications/default/bundler-2.1.2.gemspec

然后安裝(或重新安裝)要設置為默認值的 gem。

$ gem install bundler:2.1.4 --default

Successfully installed bundler-2.1.4 as a default gem

最后,您將只安裝您想要的版本。

$ gem list bundler

*** LOCAL GEMS ***

bundler (default: 2.1.4)

對於那些使用 rbenv 的人,假設您有兩個默認版本

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

檢查你的 gem 安裝路徑

$ gem environment
RubyGems Environment:
.
.
- INSTALLATION DIRECTORY: /home/yohanes/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
.

轉到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
.
.

刪除需要刪除的版本

$ rm bundler-2.1.4.gemspec

再檢查一遍

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

*** LOCAL GEMS ***

bundler (default: 1.17.2)

但是,如果您檢查捆綁版本,您仍然會默認獲得已刪除的版本

$ bundler -v
Bundler version 2.1.4

所以我們必須通過重新安裝所需的 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

然后,如果您再次檢查,它將顯示您所需的版本

$ bundle -v
Bundler version 1.17.2

gem update --system

這個命令對我有用

運行后試試這個gem list bundler

有問題的默認 .gemspec 的 rbenv 路徑應該如下所示。

/Users/yourusername/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/specifications/default/bundler-2.1.2.gemspec

來晚了,但也許我的發現可能對某人有所幫助:

在 Ruby 2.6 bundler 成為默認 gem 之后,這意味着對於每個 ruby​​ 版本都有一個默認的 bundler ,並且 bundler gem 帶有一個可執行的bundle命令。

您無法刪除此 gem,更新默認 gem 的唯一方法是使用gem update --system [<version>]更新 RubyGems 系統

我在刪除安裝路徑中的文件以強制使用默認 gem 時遇到了很多問題,我不推薦但 YMMV。 為了讓 ruby​​ 2.6.x 具有 2.x 默認和工作捆綁器,我必須從干凈的 ruby​​ 安裝開始並將 Rubygems 更新到它具有項目所需的捆綁器版本的點。

我觀察到有時默認 gems 不存在於gem environment命令的輸出中提供的INSTALLATION DIRECTORY路徑中。

我在安裝了Ruby v2.7.0 Alpine OS 中發現了這個問題。

在這種情況下,您可以使用gem list -d <GEM_NAME> -v <VERSION>命令來獲取默認gem的安裝位置。

/ # gem list -d rexml -v 3.2.3

*** LOCAL GEMS ***

rexml (3.2.3)
    Author: Kouhei Sutou
    Homepage: https://github.com/ruby/rexml
    License: BSD-2-Clause
    Installed at (default): /usr/lib/ruby/gems/2.7.0

    An XML toolkit for Ruby

要刪除默認版本,您可以使用上面輸出中顯示的/usr/lib/ruby/gems/2.7.0 刪除命令將是:

rm -rf <INSTALLED_AT_PATH>/specifications/default/<GEM_NAME>-<VERSION>.gemspec

例如:

rm -rf /usr/lib/ruby/gems/2.7.0/specifications/default/rexml-3.2.3.gemspec

TLDR:卸載 ruby​​ 然后重新安裝它。

細節:

對於使用rbenv其他人已經用盡了其他想法,以下對我rbenv

  • 退出您的項目目錄(例如cd /tmp
  • 卸載 ruby​​(例如rbenv uninstall 2.6.6
  • 重新安裝 ruby​​(例如rbenv install 2.6.6
  • 返回到您的項目目錄( cd -
  • 安裝你想要的 RubyGems(例如gem install bundler:2.1.4

在您的項目目錄中,您將看到如下內容:

-bash> gem list | grep bundle
bundler (2.1.4, default: 1.17.2)

在您的項目目錄(例如cd /tmp )之外,您將看到如下內容:

-bash> gem list | grep bundle
bundler (default: 1.17.2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM