2015-09-25 56 views
0

比方说,我有一个Ruby脚本家当是这样的:(Ruby)shebang有可能拥有“备份”版本的ruby吗?

#!/usr/local/rvm/rubies/ruby-2.0.0-p647/bin/ruby 

但脚本被四个不同的服务器上运行,并通过一个git仓库管理(我宁愿不分支循环往复)。

其中一台服务器有2.0.0-p647,其中一台有2.0.0-p598,一台有2.0.0-p643,一台只有ruby 2.1.1。该脚本要求在正则表达式中使用负反序,这意味着它必须使用2.0.0或更高版本。

由于至少在其中一台服务器上的默认安装是1.9.3,因此无法使用默认设置,因此我无法更改默认设置或更改默认设置。

有没有一种方法可以设置一个shebang,使其在不同的ruby版本上“回退”,如果首选项不可用?

+2

......这听起来更像是一个服务器管理的问题。 –

+0

这是最终的,但有时候这些事情发生时,你需要解决它们,直到它们可以修复。 –

+0

@SergioTulentsev 符号链接!为什么我没有想到这一点。 感谢队友,如果你让它成为一个真正的帖子,我会接受它作为答案。 –

回答

0

我是一个可怕的管理员,这可能会违背RVM原则,但不是一个明显的解决方案?

符号链接!使shebang使用/usr/local/bin/ruby(或类似的东西),并在每台机器上使该路径符合安装红宝石。

0
#!/usr/bin/env ruby 

,然后只是确保你想要的红宝石是在环境

+0

这不意味着加载RVM到(可能不是-interactive)shell? –

+0

好吧,这意味着将RVM目录添加到路径中。不要看到它与符号链接路线不同。 – Doon