【问题标题】:(Ruby) is it possible for a shebang to have a "backup" version of ruby?(红宝石)shebang 是否有可能拥有红宝石的“备份”版本?
【发布时间】:2015-12-23 11:35:29
【问题描述】:

假设我在这样的 ruby​​ 脚本中有一个 shebang:

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

但是该脚本正在四个不同的服务器上运行,并由一个 git repo 管理(我宁愿不无限分支)。

其中一台服务器具有 2.0.0-p647,其中一台具有 2.0.0-p598,一台具有 2.0.0-p643,一台只有 ruby​​ 2.1.1。该脚本需要在正则表达式中使用否定的lookbehinds,这意味着它必须使用 2.0.0 或更高版本。

这否定了使用默认值的能力,因为至少其中一台服务器上的默认安装是 1.9.3,我无法更改默认值或更改默认值。

有没有办法设置 shebang,如果首选的 ruby​​ 版本不可用,它会“退回”到不同的 ruby​​ 版本?

【问题讨论】:

  • ...这听起来更像是服务器管理问题。
  • 最终是这样,但有时当这些事情发生时,您需要解决它们,直到它们可以修复为止。
  • @SergioTulentsev 符号链接!我怎么没想到。谢谢朋友,如果你把它变成一个实际的帖子,我会接受它作为答案。
  • @MaxwellEvans:不妨点个赞吧:)
  • @MaxwellEvans:Dave 的意思是这类问题有一个专门的网站,serverfault.com

标签: ruby rvm shebang


【解决方案1】:

我是一个糟糕的管理员,这很可能违反 RVM 原则,但解决方案不是很明显吗?

符号链接!让 shebangs 使用 /usr/local/bin/ruby(或类似的东西),并在每台机器上将该路径作为已安装 ruby​​ 的符号链接。

【讨论】:

    【解决方案2】:
    #!/usr/bin/env ruby 
    

    然后确保你想要的红宝石在环境中

    【讨论】:

    • 这不是意味着将 RVM 加载到(可能是非交互式的)shell 中吗?
    • 这意味着将 RVM 目录添加到路径中。不要认为它与符号链接路由有太大不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多