簡體   English   中英

更改 rvm 使用的 rails 版本

[英]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 一起使用,則意味着:

  1. 您的 ruby​​ 程序將由 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​​ 程序將由 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM