如何使用rvm和rvmrc文件为同一项目使用两个不同的ruby安装?

时间:2012-02-12 03:41:17

标签: rvm

我有一个运行的应用程序,并在生产中安装在JRuby上。同样的应用程序也可以在Ruby 1.8.7中运行,也可以在开发中运行。如何使用RVM在这些rubie之间切换?

我正在寻找类似.rvmrc的解决方案,以便我可以说

rvm use .rvmrc_ruby

rvm use .rvmrc_jruby 

在Ruby版本之间切换。我通常需要这样做来测试Ruby和JRuby上的相同应用程序。

我想要一个解决方案,我可以将这些设置签入Git并运行这些东西,而无需在每次需要切换时键入Ruby版本或gemset名称。

2 个答案:

答案 0 :(得分:1)

生成这两个文件并在.rvmrc写:

source ./.rvmrc_${TEST_WITH:-jruby}

然后你可以写你的shell:

export TEST_WITH=ruby
cd .

并恢复:

unset TEST_WITH
cd .

答案 1 :(得分:0)

这看起来很傻。

首先,你为什么还要在开发中运行不同的Ruby?如果这是偶尔的测试运行,以确保不同的红宝石之间的兼容性,那么好吧,但那么......

其次,您.rvmrc中可能只有rvm use 1.8.7rvm use jruby - 这就是.rvmrc文件运行时发生的一切。真正将其输入终端有什么不好?它实际上是 less 字符而不是您给出的示例命令,并且您也可以获得制表符。如果你需要跨shell的一致性,并且实际上必须让.rvmrc反映你想要的当前Ruby,那么只需更改文件即可。或者,如果你真的必须,写一个简单的脚本来为你做(比如说它叫changervmrc.sh):

#!/bin/bash

echo "rvm use $1" > .rvmrc

并使用./changervmrc.sh jruby调用。您可以根据需要调整此选项以包括切换到特定的gemset。