簡體   English   中英

如何將特定的 gem 版本設為默認?

[英]How to make a specific gem version as default?

我有兩個版本的 ruby​​ gem。

json (default: 2.0.2, 1.8.6)

這里,最新版本設置為默認; 但是我需要將json 1.8.6設置為默認值。 無論如何,是否可以將舊版本的 gem 設為默認值? 因為我無法卸載默認的 json 版本。 需要在可用的 gem 版本之間切換。

檢查你有什么:

gem list json

設置你想要的:

gem install --default -v1.8.6 json

這對諸如“捆綁器”之類的東西最有用!!! 對於其他事情,使用 bundler 和 Gemfile 可能是更好的選擇。

添加

gem 'json', '1.8.6'

到您的Gemfile或執行

gem install 'json' -v 1.8.6 # may require sudo if you use system ruby

從終端。

Gemfile是必須的,但還不夠。 你也應該改變行

require 'json'

require 'bundler/setup'
Bundler.require :default

這將需要您的Gemfile中指定的所有 gems 沒有group

將此添加到您的 Gemfile

gem 'json', '1.8.6'

現在在你的命令行中運行它

bundle update

這應該設置您需要的版本

由於您使用 RVM 來管理您的 Ruby 版本,正如您在評論中所說,有一個簡單的解決方案:為此應用程序創建一個私有包,並在此包中僅安裝您需要的 gem 版本。

你可以這樣做:

1) 輸入您的應用程序目錄;

2)輸入以下命令

rvm use ruby-2.4.0@your_app_name --ruby-version --create

(我假設您使用的是 Ruby 2.4.0。如果這不是您的版本,請在上面的命令中相應地替換它。)

3) 安裝 bundler gem

gem install bundler

4) 確保您的 Gemfile 聲明了您需要的 gem 版本。 在這種情況下,它必須具有以下行:

gem "json", "1.8.6"

5)現在運行

bundle install

你已經完成了!

警告:此過程將確保json gem版本為 1.8.6。 但是,如果bundle install其他一些 gem 需要較新版本的json gem ,則您的bundle install可能會出現問題。 在這種情況下,您必須以其他方式解決此沖突。

要了解有關不同應用程序的不同捆綁包的更多信息,請閱讀

我希望這有幫助。

語境:

從 CLI 運行一個簡單的 ruby​​ 測試

ruby -I test test/controllers/api_controller_test.rb

錯誤:

您已經激活了 json 2.0.2,但是您的 Gemfile 需要 json 1.8.6。 由於 json 是默認 gem,您可以刪除對它的依賴,也可以嘗試更新到支持 json 作為默認 gem 的較新版本的 bundler。 (寶石::加載錯誤)

解決方法只是使用 bundle exec 運行測試,如下所示:

bundle exec ruby -I test test/controllers/api_controller_test.rb

暫無
暫無

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

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