2013-03-12 133 views
1

当我列出红宝石我的系统上的所有版本,我得到这个:如何更改我的项目的默认gemset和ruby版本?

$ rvm list rubies 

rvm rubies 

    ruby-1.8.7-p370 [ i686 ] 
    ruby-1.9.2-p0 [ x86_64 ] 
    ruby-1.9.2-p320 [ x86_64 ] 
* ruby-1.9.3-p194 [ x86_64 ] 
=> ruby-1.9.3-p392 [ x86_64 ] 
    ruby-2.0.0-p0 [ x86_64 ] 

# => - current 
# =* - current && default 
# * - default 

当我列出我的项目一个新的终端窗口的宝石,我看到:

$ rvm gemset list 

gemsets for ruby-1.9.3-p392 (found in /.rvm/gems/ruby-1.9.3-p392) 
    (default) 
=> myapp 
    boso 
    global 

于是,我改变1.9.3的版本,我想用:

$ rvm use 1.9.3-p194 
Using /.rvm/gems/ruby-1.9.3-p194 
$ rvm gemset list 

gemsets for ruby-1.9.3-p194 (found in /.rvm/gems/ruby-1.9.3-p194) 
=> (default) 
    myapp1 
    myapp2 
    myapp3 
    myapp4 
    global 

然后我尝试设置为宝石myapp1到VERS默认离子1.9.3-p194并将其设置为默认值,并且似乎工作:

$ rvm use [email protected] --default 
Using /.rvm/gems/ruby-1.9.3-p194 with gemset myapp1 

但是,当我推出一个新的终端窗口并执行rvm gemset list,我最终回到了起点1 - 使用Ruby的不同versino - 即1.9.3-p392代替-p194

$ rvm gemset list 

gemsets for ruby-1.9.3-p392 (found in /.rvm/gems/ruby-1.9.3-p392) 
    (default) 
=> myapp 
    boso 
    global 

是否发生这种情况是因为在打开新窗口之前我没有关闭以前的终端窗口?我必须强制RVM为所有会话保存吗?

我错过了什么?

我也试过rvm --default use [email protected],这给了我同样的问题。

+0

做'RVM使用[email protected] --default'然后退出终端。打开终端备份并运行'rvm list'和'rvm gemset list'。仍然是一个问题? – AdamT 2013-03-12 04:48:21

+0

请参阅我在答案中留下的评论。 – marcamillion 2013-03-12 05:26:48

回答

5

如果您想为每个项目指定特定的gemset和ruby版本,只需在您的根项目中直接手动创建一个.rvmrc文件即可。在那个文件中加入:

[email protected] --create 

或者如果你不想手动创建它,你可以让rvm为你做。 cd到项目的根目录下,并创建一个.rvmrc文件是这样的:

$ rvm use [email protected] --create --rvmrc 

确保.rvmrc文件包含与此类似,在这种格式的行:

environment_id="[email protected]" 

更新:

使用RVM时,用于设置每个项目的ruby版本和gemset的约定是在项目的根目录中使用.ruby-version文件和.ruby-gemset文件。

一个.ruby-version文件应该是这样的:

ruby-2.0.0-p598 

一个.ruby-gemset文件应该是这样的:

my_gemset_name 
+0

我已经这样做了。这就是为什么当我执行'rvm gemset list'时所有这些gemset。问题是当我在现有的终端窗口中将当前目录设置为新的默认值后启动新的终端窗口时。这就是它不起作用的地方。 – marcamillion 2013-03-12 05:24:01

+0

虽然你已经做了一些工作,但是我检查了我的'.rvmrc'文件,并且发现这个变量的设置错误:'environment_id =“[email protected]”。所以我把它改成'environment_id =“[email protected]”'(具体的'1.9.3'版本),现在它工作的很好。如果您更新答案以反映这一点,我会接受它。 – marcamillion 2013-03-12 05:26:10

+0

我实际上已经手动创建了一个'.rvmrc'文件,并且上面给出的步骤可以正常工作。如果您不指定补丁级别,它也可以工作。因此,假设你声明'1.9.3 @ gemset',当你cd到该目录时,你将最终使用'1.9.3-p194',因为这是你拥有的最新的ruby版本。我会说解决方案可能是修复了一个损坏的rvmrc文件。 – AdamT 2013-03-12 05:33:41