如何分发带有所需gems的Ruby脚本

如何分发带有所需gems的Ruby脚本,ruby,Ruby,我有一个Ruby脚本遇到了问题,因为最终用户没有所有必需的gem。我一直在研究这个问题,似乎把它包装成宝石是确保它对任何人都有效的最好方法 这是分发Ruby脚本并且不必担心最终用户在运行时没有gem的最佳方式吗 如果我这样做,最终用户将如何运行脚本?现在他们正在使用ruby script\u name执行它,我正在编写一个bash脚本来自动为他们运行它 如果作为gem安装,我还可以使用bash脚本来运行脚本吗?拥有一个可双击的文件来运行脚本对于那些需要使用它的人来说是天赐良机,而这些人在技术上并

我有一个Ruby脚本遇到了问题,因为最终用户没有所有必需的gem。我一直在研究这个问题,似乎把它包装成宝石是确保它对任何人都有效的最好方法

  • 这是分发Ruby脚本并且不必担心最终用户在运行时没有gem的最佳方式吗
  • 如果我这样做,最终用户将如何运行脚本?现在他们正在使用
    ruby script\u name
    执行它,我正在编写一个bash脚本来自动为他们运行它
  • 如果作为gem安装,我还可以使用bash脚本来运行脚本吗?拥有一个可双击的文件来运行脚本对于那些需要使用它的人来说是天赐良机,而这些人在技术上并不那么有兴趣

  • 我的操作假设您所需的gem位于
    Gemfile
    中。如果你让他们运行bash脚本来运行你的Ruby脚本,在让bash脚本运行你的Ruby脚本之前,你是否考虑过在bash脚本中添加
    bundle install
    ?这将在运行脚本之前安装所有必需的gems


    另一个选项是设置一个Docker容器,该容器已经安装了所有gems,并且只自动运行Ruby脚本。这将帮助您解决用户使用错误版本Ruby的问题,但会增加让他们安装Docker的成本。

    获得一个干净的、跨平台的“可点击文件”即使不令人沮丧,也是非常具有挑战性的。你的目标是什么操作系统?我很确定我的目标是Mac OS X,尽管我越想,我越觉得我发送此信息的对象可能是Windows机器上的人。对于你需要适应的每个操作系统版本,复杂性都会成倍增加。Windows 7和Windows 10可能有很大的不同。这是什么类型的应用程序,涉及多少代码?虽然我是Ruby的忠实粉丝,但您可能会发现另一种语言提供了更简单的交付选项,例如,为了便于跨平台移植,我付出了大量的努力。就我所知,Ruby不存在这样的东西。过去有过尝试,但都被放弃了。还有一个选项,你可以将它压缩成一个
    .jar
    文件,并以这种方式分发。请检查。如果我添加了
    捆绑安装
    ,我还必须用我发送的zip文件打包Gemfile。正确吗?这肯定是一种选择——尽管bundler本身不是一块宝石吗?这将需要他们安装一个gem,这在理想情况下是我想要避免的。我将尝试查看Docker。是的,您必须用您发送的
    .zip
    打包
    Gemfile
    ,是的
    bundler
    本身就是一块宝石。您还可以将其添加到bash脚本中:
    gem安装捆绑程序
    ;)哈哈!这是我现在非常感兴趣的解决方案!我假设脚本将停止并等待bundler安装,然后执行下一行?