RVM:指定要使用的ruby版本

时间:2011-11-18 17:05:32

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 rvm

我知道如何使用RVM,但现在我有一个奇怪的问题,我不明白为什么。

这是一个简单的故事(我使用的是Ubuntu):

我创建了一个Rails项目,该项目的目标是“bookstore /".

我按cd bookstore转到项目目录,然后输入命令rvm list,如下所示:

bookstore/$ rvm list

rvm rubies

   ruby-1.9.2-p136 [ i386 ]
   ruby-1.8.7-p352 [ i386 ]
   ruby-1.8.7-p330 [ i386 ]
   ruby-1.8.6-p420 [ i386 ]
   ruby-1.9.2-p290 [ i386 ]

由于我没有看到=>箭头符号,它应该表示当前正在使用的ruby版本,因此我使用以下 RVM 命令指定ruby版本:

bookstore/$ rvm use ruby-1.9.2-p290
Using /home/usr/.rvm/gems/ruby-1.9.2-p290

现在,如果我rvm list我看到我的项目正在使用 ruby​​ v1.9.2

bookstore/$ rvm list
rvm rubies

   ruby-1.9.2-p136 [ i386 ]
   ruby-1.8.7-p352 [ i386 ]
   ruby-1.8.7-p330 [ i386 ]
   ruby-1.8.6-p420 [ i386 ]
=> ruby-1.9.2-p290 [ i386 ]

此时一切正常!

但是,如果现在我在Ubuntu上打开一个新的终端窗口,并cd到项目目录,并运行命令rvm list我又得到了:

bookstore/$ rvm list

rvm rubies

    ruby-1.9.2-p136 [ i386 ]
    ruby-1.8.7-p352 [ i386 ]
    ruby-1.8.7-p330 [ i386 ]
    ruby-1.8.6-p420 [ i386 ]
    ruby-1.9.2-p290 [ i386 ]

=>在哪里表示我之前指定的ruby版本? 为什么又需要我指定ruby版本?

总是在我打开一个新的终端窗口时发生。如何让我的项目“记住”我指定的ruby版本?

2 个答案:

答案 0 :(得分:28)

戴夫是对的,你应该设置默认值。但是,请考虑在每个项目或每台计算机上定义.rvmrc文件。我使用特定于项目的rvmrc文件,因此我可以为每个项目使用不同的rubies和gemsets,并且更改到目录会自动切换到该项目的ruby / gemset。

例如,我公司网站项目的rvmrc:

brett@bender:~/Sites/bearded/bearded(master)$ cat .rvmrc 
rvm 1.9.3@bearded

编辑:为了显而易见,要使用rvmrc文件解决您的问题,请执行以下操作(假设您已经安装了所需的ruby版本并为此项目的gem创建了gemset): / p>

  1. 在名为bookstore/的{​​{1}}目录中创建一个文件(在您最喜欢的编辑器中)
  2. .rvmrc添加到文件并保存(如果您要默认使用gemset,则可以使用rvm ruby-1.9.2-p290
  3. 将目录更改为书店目录,然后再切换回目录。
  4. RVM应该询问您是否要信任此.rvmrc文件(是)
  5. RVM应该自动将您的活动ruby和gemset切换到该项目的rvmrc文件中指定的值。
  6. 另请注意,如果您的RVM早于1.8.0版,则需要打开rvmrc文件支持(版本1.8.0+默认情况下已打开)。如果您愿意,我问题顶部的链接包含说明。

答案 1 :(得分:8)

您需要设置默认值。

rvm --default 1.9.2-p290  # Or whichever.

新的shell是一个新的环境;它不会(通常)从已经打开的终端继承

对于每个项目设置,请在项目的根目录中使用.rvmrc文件,例如:

rvm --create gemset use 1.9.2-p0@my_project

--create将创建gemset(如果它尚不存在),如果您或其他人跨机器处理同一项目,则会很方便。