2013-01-10 39 views
2

當我進入我的rails項目目錄時,爲什麼rvm會切換gemsets?爲什麼rvm切換gemsets當我cd到我的rails項目目錄?

我沒有.rvmrc文件。我設置了一個默認的gemset(對其他目錄「堅持」)。這就是我的意思:

[20130109_234306] [email protected]:~ 
$ rvm gemset list 

gemsets for ruby-1.9.3-p362 (found in /Users/will/.rvm/gems/ruby-1.9.3-p362) 
    (default) 
    global 
=> ruby-1.9.3 

[20130109_234313] [email protected]:~ 
$ cd Projects/rails_project 

[20130109_234320] [email protected]:~/Projects/rails_project 
$ rvm gemset list 

gemsets for ruby-1.9.3-p362 (found in /Users/will/.rvm/gems/ruby-1.9.3-p362) 
=> (default) 
    global 
    ruby-1.9.3 

回答

5

如果Gemfile指定ruby版本(類似於ruby =「1.9.3」或#[email protected]),rails項目目錄中的Gemfile將告訴RVM切換紅寶石。

這是因爲RVM支持,不只是.rvmrc =>https://rvm.io/workflow/projects/#ruby-versions的完整列表可以在這裏找到:https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/rvmrc#L743-L744

注意,RVM將檢查以下文件前的Gemfile:.rvmrc.versions.conf.ruby-version.rbfu-version.rbenv-version。因此,創建一個.rvmrc文件,其中的行「rvm use [email protected]」會使RVM忽略Gemfile。

+0

它看起來像rvm檢查Gemfile('「$ path_to_check/Gemfile」') - 可能導致rvm切換gemsets? – thewillcole

+0

是'Gemfile'如果有一行'ruby =「1.9.3」'或'#ruby = 1.9。3 @ gemset'會讓RVM切換gemsets/rubies – mpapis

+0

.rvmrc文件是告訴rvm忽略Gemfile的首選方式嗎? – thewillcole

1

RVM有一個叫做Project .rvmrc的功能。在~/Projects/rails_project中有一個名爲.rvmrc的文件,其中包含RVM的說明,以便您進入該項目。

編輯:我錯過了關於你沒有該文件的路線。抱歉。

+0

我在閱讀你的答案之前添加了一個.rvmrc文件*,它使所有的工作都成功。 :)但我仍然困惑,爲什麼我需要它... – thewillcole

1

您可以禁用禁用項目Gemfile檢查的項目.rvmrc。爲此,請將以下行添加到/etc/rvmrc~/.rvmrc。然後,您不必爲任何項目添加.rvmrc文件,因爲它們將被Gemfile忽略。這在rvm 1.19.6 (Stable)上進行了測試。

rvm_project_rvmrc=0 

來源:https://rvm.io/workflow/rvmrc

0

有兩種方式至少要實現這一點,如:

  1. echo 2.1.1 > .ruby-versionecho rails4 > .ruby-gemset

  2. 增加第一線#[email protected]到Gemfile中

why .ruby-gemset

.ruby-version還支持[email protected]格式的gemssets,但這與其他Ruby版本管理器不兼容。另一個文件可能用於指定gemset而不破壞兼容性 - .ruby-gemset

我認爲以上是最佳做法。

相關問題