RVM:指定要使用的ruby版本

Mel*_*lon 19 ruby-on-rails rvm ruby-on-rails-3 ruby-on-rails-3.1

我知道如何使用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 ]
Run Code Online (Sandbox Code Playgroud)

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

bookstore/$ rvm use ruby-1.9.2-p290
Using /home/usr/.rvm/gems/ruby-1.9.2-p290
Run Code Online (Sandbox Code Playgroud)

现在,如果我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 ]
Run Code Online (Sandbox Code Playgroud)

在这一点上,每件事情都很好!

但是,如果现在我在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 ]
Run Code Online (Sandbox Code Playgroud)

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

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

Bre*_*der 28

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

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

brett@bender:~/Sites/bearded/bearded(master)$ cat .rvmrc 
rvm 1.9.3@bearded
Run Code Online (Sandbox Code Playgroud)

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

  1. bookstore/目录中创建一个文件.rvmrc(在您喜欢的编辑器中)
  2. 添加rvm ruby-1.9.2-p290到文件并保存(rvm ruby-1.9.2-p290@gemset_name如果您有要默认的gemset,则可以使用)
  3. 将目录更改为书店目录,然后再切换回它.
  4. RVM应该问你是否要信任这个.rvmrc文件(是的)
  5. RVM应该自动将您的活动ruby和gemset切换到该项目的rvmrc文件中指定的值.

另请注意,如果您的RVM早于1.8.0版,则需要打开rvmrc文件支持(版本1.8.0+默认情况下已打开).如果您愿意,我问题顶部的链接包含说明.


Dav*_*ton 8

您需要设置默认值.

rvm --default 1.9.2-p290  # Or whichever.
Run Code Online (Sandbox Code Playgroud)

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

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

rvm --create gemset use 1.9.2-p0@my_project
Run Code Online (Sandbox Code Playgroud)

--create将创建宝石,如果它不存在,很方便,如果您或他人在跨机器的同一个项目.