我知道如何使用RVM,但现在我有一个奇怪的问题,我不明白为什么.
这是简单的故事(我正在使用Ubuntu):
我创建了一个Rails项目,这个项目的目标是“书店”.
我通过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列表我看到我的项目正在使用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命令,我得到:
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版本?
当我打开一个新的终端窗口时总会发生.如何让我的项目“记住”我指定的红宝石版本?
解决方法
戴夫是对的,你应该设置一个默认值.而且,还要考虑在每个项目或每个机器的基础上定义一个
.rvmrc
文件.我使用项目特定的rvmrc文件,所以我可以为每个项目使用不同的rubies和gemsets,并且改变到目录自动切换到该项目的ruby / gemset.
例如,我的rvmrc为公司网站项目:
brett@bender:~/Sites/bearded/bearded(master)$cat .rvmrc rvm 1.9.3@bearded
编辑:为了清楚,为了使用rvmrc文件解决问题,请执行以下操作(假设您已经安装了所需的ruby版本,并为此项目的gem创建了一个gemset):
>在bookstore /目录下创建一个名为.rvmrc的文件(在你喜欢的编辑器中)
>将rvm ruby-1.9.2-p290添加到文件中并保存(如果您有默认的gemset,则可以使用rvm ruby-1.9.2-p290@gemset_name)
>将目录从您的书店目录中更改,然后更改为该目录.
> RVM应该问你是否要信任这个.rvmrc文件(是)
> RVM应该自动将您的活动ruby和gemset切换到该项目的rvmrc文件中指定的.
另请注意,如果您的RVM早于1.8.0版本,则需要打开rvmrc文件支持(版本1.8.0默认启用).我的问题顶部的链接包含说明,如果你这么倾向.