我知道如何使用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版本?
答案 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>
bookstore/
的{{1}}目录中创建一个文件(在您最喜欢的编辑器中).rvmrc
添加到文件并保存(如果您要默认使用gemset,则可以使用rvm ruby-1.9.2-p290
)另请注意,如果您的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(如果它尚不存在),如果您或其他人跨机器处理同一项目,则会很方便。