如何指定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,這意味着:
你的Ruby程序將紅寶石1.9.3執行。
您的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。
哦,是的!那很完美。謝謝。 – Pol0nium
當然,但我必須等待5分鐘;) – Pol0nium
這是一個修復,創建一個具體的rails版本的rails應用程序,但不是與rvm原來的問題的解決方案.. @mpapis答案點正是原來的題。 – Mattherick