2017-03-02 32 views
5

我有兩個版本的紅寶石寶石。如何製作一個特定的寶石版本作爲默認?

json (default: 2.0.2, 1.8.6) 

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

+0

你使用** rvm **來管理你的ruby版本嗎? –

+0

@EddeAlmeida是的,我使用RVM;無論如何通過它? –

+0

當然。您可以爲此應用程序創建一個專用包,並只安裝您需要的寶石。 –

回答

2

添加

gem 'json', '1.8.6' 

Gemfile或終端執行

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

+0

我已經安裝了1.8.6;但我仍然試着這樣做。沒有運氣:( –

+0

所以,如果你沒有任何可移植性的擔憂,就像'require'absolute/path/to/gems/ruby​​-2.3.1/gems/json-1.8.6'' – marmeladze

+0

did not work :( 無法加載這樣的文件 - /Users/%username%/.rvm/gems/ruby-2.4.0/gems/json-1.8.6(LoadError) –

3

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

require 'json' 

require 'bundler/setup' 
Bundler.require :default 

這將需要在你的Gemfile,如果沒有group指定的所有寶石。

+1

從技術上講,這將使用'Gemfile.lock' –

1

添加這是你的Gemfile

gem 'json', '1.8.6' 

現在在命令行中運行這個

bundle update 

這應該設置你的版本,你需要

+0

它doesnt工作;因爲我有json 2.0.2已經安裝,它設置爲默認 –

+0

btw我已經試過這個 –

1

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

這是你可以怎麼做:

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

2)鍵入以下命令

rvm use [email protected]_app_name --ruby-version --create 

(我假設你正在使用Ruby 2.4.0。如果這不是您的版本,在上面的命令,因此替換它,請。)

3)安裝捆綁寶石

gem install bundler 

4)確保您的Gemfile聲明你所需要的寶石的版本。在這種情況下,它必須有行:

gem "json", "1.8.6" 

5)現在運行

bundle install 

和你做!

警告:此過程將確保json gem將版本1.8.6。但是,如果您安裝的其他寶石需要更新版本的json gem,您可能會遇到問題bundle install。在這種情況下,你必須以其他方式解決這個衝突。

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

我希望這會有所幫助。

相關問題