2013-08-17 101 views
24

這裏是我當地的寶石版本:變更軌道使用RVM

$ gem list 

*** LOCAL GEMS *** 

actionmailer (4.0.0, 3.2.14) 
actionpack (4.0.0, 3.2.14) 
activemodel (4.0.0, 3.2.14) 
activerecord (4.0.0, 3.2.14) 
activerecord-deprecated_finders (1.0.3) 
activeresource (3.2.14) 
activesupport (4.0.0, 3.2.14) 
arel (4.0.0, 3.0.2) 
atomic (1.1.13) 
builder (3.1.4, 3.0.4) 
bundler (1.3.5) 
bundler-unload (1.0.1) 
erubis (2.7.0) 
hike (1.2.3) 
i18n (0.6.5) 
journey (1.0.4) 
json (1.8.0) 
mail (2.5.4) 
mime-types (1.24) 
minitest (4.7.5) 
multi_json (1.7.9) 
polyglot (0.3.3) 
rack (1.5.2, 1.4.5) 
rack-cache (1.2) 
rack-ssl (1.3.3) 
rack-test (0.6.2) 
rails (3.2.14) 
railties (4.0.0, 3.2.14) 
rake (10.1.0) 
rdoc (3.12.2) 
rubygems-bundler (1.2.2) 
rubygems-update (2.0.7) 
rvm (1.11.3.8) 
sprockets (2.10.0, 2.2.2) 
sprockets-rails (2.0.0) 
thor (0.18.1) 
thread_safe (0.1.2) 
tilt (1.4.1) 
treetop (1.4.15) 
tzinfo (0.3.37) 

但是,當我鍵入rails -v我得到這個:

$ rails -v 
Rails 4.0.0 
$ which rails 
/Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails 

如何指定RVM用Rails版本3.2.14 ?

在此先感謝

回答

39

您可以創建一個特定的軌道版本的新軌道的應用程序,這樣

rails _3.2.14_ new myApp 
+0

哦,是的!那很完美。謝謝。 – Pol0nium

+0

當然,但我必須等待5分鐘;) – Pol0nium

+1

這是一個修復,創建一個具體的rails版本的rails應用程序,但不是與rvm原來的問題的解決方案.. @mpapis答案點正是原來的題。 – Mattherick

19

您發現/Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails的路徑是不正確的路徑,你會在標準RVM安裝,同時發現做適當的使用rvm,你會看到應該是:/Users/polonium/.rvm/gems/ruby-2.0.0-p247/bin/rails

讓它正常工作試試這個流程:

rvm use 2.0.0 
rvm gemset empty 
rvm use @rails3 --create 
gem install rails -v "~>3.2" 
rvm use @rails4 --create 
gem install rails -v "~>4" 

現在這種方式,您可以使用此兩條導軌安裝之間切換:

rvm use [email protected] 
rails -v    # rails 3.2... 
rvm use [email protected] 
rails -v    # rails 4.0... 
+2

如果gemset不存在,請執行以下操作: rvm使用@ rails3 --create – Techbrunch

42

如何指定RVM用Rails版本3.2.14?

rvm與rails無關。 rvm用於管理多個ruby安裝。並且您的每個Ruby安裝都可以與多個gemset關聯。例如,假設你已經安裝了ruby 1.9.3,併爲ruby 1.9.3創建了兩個gemset:gemsetA和gemsetB。如果你告訴RVM使用Ruby 1.9.3與gemsetA,這意味着:

  1. 你的Ruby程序將紅寶石1.9.3執行。

  2. 您的ruby程序可能需要gemsetA中的任何gem(然後允許您的程序使用gemsetA中定義的方法(或類)),但您的ruby程序無法看到gemsetB中的任何gem。

這裏有一個具體的例子:

~$ rvm list 

rvm rubies 

    ruby-1.8.7-p370 [ i686 ] 
* ruby-1.9.3-p194 [ x86_64 ] 
=> ruby-2.0.0-p0 [ x86_64 ] 
    ruby-2.0.0-p247 [ x86_64 ] 

# => - current 
# =* - current && default 
# * - default 


~$ rvm use 1.9.3-p194 
Using /Users/7stud/.rvm/gems/ruby-1.9.3-p194 

~$ rvm gemset list (This lists only the gemsets for the current ruby version) 

gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194) 
=> (default) 
    global 
    programming 
    rails3tutorial 
    rails4 

~$ rvm gemset use programming 
Using ruby-1.9.3-p194 with gemset programming 

我做到這一點後,我的Ruby程序將被紅寶石1.9.3執行,在編程寶石寶石任何可能需要爲我的Ruby程序。您可以使用快捷方式一步執行這兩個命令:

rvm use ruby [email protected] 

你剛纔組合紅寶石版和寶石與他們之間的「@」。

但是當我輸入軌-v我得到這個:

$ rails -v 
Rails 4.0.0 

這是因爲目前的寶石包含導軌4.0.0的寶石。如果你想看到$ rails -v輸出Rails 3.2.14,那麼你需要告訴rvm切換到包含rails 3.2.14 gem的gemset。

但是,您可以讓rvm自動切換到適合您的rails項目的rails版本和gemset。在你的Gemfile,紅寶石版本後添加評論:

ruby '2.0.0' 
#ruby-gemset=railstutorial4_gems 

然後,每當您切換到包含Rails項目的目錄,RVM會自動切換當前紅寶石紅寶石2.0.0和當前的寶石來railstutorial4_gems。如果你改變你的rails應用程序的目錄,rvm會將當前的ruby和當前的gemset改回原來的樣子。

我只是一個初學者的軌道,但這裏的步驟我用它來創建一個新的項目,這是直出railstutorial書(http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

1)

.../rails_projects$ rvm use <ruby version here>@<new gemset name here> --create 

e.g. 

.../rails_projects$ rvm use [email protected]_gemset --create 

2 )

.../rails_projects$ gem install rails --version 3.2.14 

由於當前gemset是myapp gemset,因此該命令會將rails 3.2.14 gem安裝到myapp gemset中。

3)

.../rails_projects$ rails new myapp 
.../rails_projects$ cd myapp 

當前寶石仍然myapp_gemset。

4)

.../rails_projects/myapp$ rails -v 
Rails 3.2.14 

如果有人想知道究竟發生了什麼以下兩個gemsets都是關於:

gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194) 

=> (default) 
    global 

RVM創建這兩個gemsets爲您安裝每一個Ruby版本。在安裝ruby版本之後,如果您沒有爲該ruby版本自己創建gemset,並且安裝了gem,那麼該gem會進入(默認)gemset。而且,如果您希望所有寶石包含某種寶石,則可以切換到全局寶石鑲嵌並在其中安裝寶石。

更新: -------

要保持與其它紅寶石版本兼容性的經理,你可以在不同的文件,而不是在Gemfile中指定項目紅寶石版本和寶石的名字:

$ cd ~/rails_projects/myapp 

~/rails_projects/myapp$ echo 2.0.0 > .ruby-version 
~/rails_projects/myapp$ echo myapp_gemset > .ruby-gemset 

你仍然得到同樣的自動紅寶石版和寶石開關,當你cd到項目的目錄。請參閱rvm文檔here

+0

這是一個非常好的書面答案。特別是關於「在您的Gemfile中,在Ruby版本之後添加註釋」的部分。我不知道rvm會在版本之間自動切換。 – harisibrahimkv

+0

StackOverflow中的稀有和無瑕鑽石。謝謝7stud。謝謝。 – user

5

你應該這樣做:gem install'rails'-v'3.2。13'

你應該用乾淨的寶石,如果你正在使用RVM,你可以嘗試:

RVM寶石創建 RVM寶石使用

現在你有一個乾淨的寶石,它是一次安裝導軌,

創業板安裝導軌-V '3.2.13'

,然後創建一個Rails應用程序,

軌新APP_NAME

0

「railties(4.0.0,」 是你的問題。我猜這是錯誤安裝的?

使用卸載該版本,gem卸載railties,然後使用4.0.0選擇該選項。

現在命令「軌道-v」將返回您預期的版本是「3.2.14」

0

確保首先確保你是在Ruby版本,查看全球寶石要使用

$ruby -v 

然後切換到全球寶石(全球寶石applys所有gemsets的,所以一定要保持它的清潔和通用...或全球性的,因此得名)

$rvm gemset use global 

之後,檢查寶石列表爲戒通過鍵入

$gem list 

有時全球寶石可以通過一個偶然的寶石,將影響所有其他gemsets填充提到的寶石,可以影響它像「railties」寶石。如果您發現放錯了位置的寶石,你可以用

$gem uninstall examplegem 

簡單地將其卸載或創業板的特定版本傳中,-v用引號

$gem uninstall examplegem -v"3.2.1" 

的版本,並創造7stud的評論並使用RVM在不同的gemset之間進行切換。