我有一个运行的应用程序,并在生产中安装在JRuby上。同样的应用程序也可以在Ruby 1.8.7中运行,也可以在开发中运行。如何使用RVM在这些rubie之间切换?
我正在寻找类似.rvmrc
的解决方案,以便我可以说
rvm use .rvmrc_ruby
或
rvm use .rvmrc_jruby
在Ruby版本之间切换。我通常需要这样做来测试Ruby和JRuby上的相同应用程序。
我想要一个解决方案,我可以将这些设置签入Git并运行这些东西,而无需在每次需要切换时键入Ruby版本或gemset名称。
答案 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.7
或rvm use jruby
- 这就是.rvmrc
文件运行时发生的一切。真正将其输入终端有什么不好?它实际上是 less 字符而不是您给出的示例命令,并且您也可以获得制表符。如果你需要跨shell的一致性,并且实际上必须让.rvmrc
反映你想要的当前Ruby,那么只需更改文件即可。或者,如果你真的必须,写一个简单的脚本来为你做(比如说它叫changervmrc.sh
):
#!/bin/bash
echo "rvm use $1" > .rvmrc
并使用./changervmrc.sh jruby
调用。您可以根据需要调整此选项以包括切换到特定的gemset。