[英]Change rails version used by 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 ?
提前致謝
您可以使用特定的 rails 版本創建一個新的 rails 應用程序,如下所示:
rails _3.2.14_ new myApp
如何指定 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 程序將由 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 程序將由 ruby 1.9.3 執行,並且編程 gemset 中的任何 gem 都可以被需要到我的 ruby 程序中。 您可以使用快捷方式一步執行這兩個命令:
rvm use ruby 1.9.3-p194@programming
您只需將 ruby 版本和 gemset 與它們之間的“@”組合起來。
但是當我輸入 rails -v 我得到這個:
$ rails -v Rails 4.0.0
這是因為當前的 gemset 包含 Rails 4.0.0 的 gem。 如果您想看到$ rails -v
輸出Rails 3.2.14
,那么您需要告訴 rvm 切換到包含 rails 3.2.14 gem 的 gemset。
但是,您可以讓 rvm 自動切換到適合您的 rails 項目的 rails 版本和 gemset。 在您的 Gemfile 中,在 ruby 版本后添加注釋:
ruby '2.0.0'
#ruby-gemset=railstutorial4_gems
然后每當您切換到包含 Rails 項目的目錄時,rvm 會自動將當前的 ruby 切換到 ruby 2.0.0,將當前的 gemset 切換到 railstutorial4_gems。 如果您從 Rails 應用程序中更改目錄,rvm 會將當前的 ruby 和當前的 gemset 更改回原來的狀態。
我只是一個 rails 初學者,但這里是我用來創建一個新項目的步驟,這些步驟直接來自 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 ruby-1.9.3-p194@myapp_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
當前的 gemset 仍然是 myapp_gemset。
4)
.../rails_projects/myapp$ rails -v
Rails 3.2.14
如果有人想知道以下兩個寶石是什么鬼東西:
gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194)
=> (default)
global
rvm 為您安裝的每個 ruby 版本創建這兩個 gemset。 安裝 ruby 版本后,如果您沒有為該 ruby 版本自己創建 gemset,並且安裝了 gem,那么 gem 將進入(默認)gemset。 而且,如果您希望所有 gemset 都包含某個 gem,您可以切換到全局 gemset 並在那里安裝 gem。
更新: -------
為了保持與其他 ruby 版本管理器的兼容性,您可以在不同的文件中而不是在 Gemfile 中為您的項目指定 ruby 版本和 gemset 名稱:
$ cd ~/rails_projects/myapp
~/rails_projects/myapp$ echo 2.0.0 > .ruby-version
~/rails_projects/myapp$ echo myapp_gemset > .ruby-gemset
當您cd
進入您的項目目錄時,您仍將獲得相同的自動 ruby 版本和 gemset 切換。 請在此處查看 rvm 文檔。
您找到的路徑/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 2.0.0@rails3
rails -v # rails 3.2...
rvm use 2.0.0@rails4
rails -v # rails 4.0...
你應該這樣做: gem install 'rails' -v '3.2.13'
您應該使用干凈的 gemset,如果您使用的是 rvm,您可以嘗試:
rvm gemset 創建 rvm gemset 使用
現在你有了一個干凈的 gemset,是時候安裝 rails,
gem install rails -v '3.2.13'
然后創建一個 rails 應用程序,
rails 新 app_name
“railties (4.0.0,”是你遇到的問題。我猜是安裝錯了?
使用 gem 卸載 railties 卸載該版本,然后選擇 4.0.0 的選項。
現在命令“rails -v”將返回您預期的版本“3.2.14”
首先確保您使用的是您打算使用的 ruby 版本,從而確保檢查全局 gemset
$ruby -v
然后切換到全局 gemset(全局 gemset 適用於所有 gemset 所以一定要保持它干凈和通用......或全局,因此得名)
$rvm gemset use global
之后,檢查寶石列表中可能影響它的寶石,例如 Harsha 通過鍵入提到的“railties”寶石
$gem list
有時,全局 gemset 可能會被意外的 gem 填充,這會影響所有其他 gemset。 如果您發現放錯位置的 gem,您可以簡單地將其卸載
$gem uninstall examplegem
或者對於該 gem 的特定版本,在 -v 中使用引號中的版本
$gem uninstall examplegem -v"3.2.1"
並閱讀 7stud 關於創建和使用 RVM 在不同 gemset 之間進行更改的評論。
您可以添加所需的 Rails 版本:
$ gem install rails --version 3.2.14
然后使用該版本創建一個應用程序:
$ rails _3.2.14_ new myapp
最后,您可以查看“Gemfile”的內容來證實:
...
gem 'rails', '3.2.14'
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.