[英]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.