【问题标题】:Do you have to do duplicate gem installs for JRuby & MRI?您是否必须为 JRuby 和 MRI 进行重复的 gem 安装?
【发布时间】:2009-04-25 02:56:25
【问题描述】:

我安装了 JRuby 和 Ruby (MRI)。看来我需要安装两次 gems - 每个平台一次。这是必要的还是我做错了?在我安装了用于 MRI 的 rails gem 之后,我应该将 JRuby 指向它,还是我还需要调用:“jruby -S gem install rails”

【问题讨论】:

    标签: ruby installation jruby gem


    【解决方案1】:

    您需要为每个不同的 ruby​​ 安装安装 gem。

    【讨论】:

      【解决方案2】:

      如果您设置 GEM_HOME,您可以共享您的 gem 安装。

      【讨论】:

        【解决方案3】:

        一些 gem 针对特定平台,例如Mongrel(有一个 MRI 和一个 JRuby)。此外,JRuby 不能使用具有本机扩展(即 C 代码)的 gem,除非它们使用 FFI(大多数还没有)。

        我个人对 MRI 和 JRuby 有单独的 gem 存储库。在尝试追查问题时,一点点额外的麻烦值得高枕无忧。

        很容易看到每个 repo 安装了什么:

        jruby -S gem list --local
        

        对比

        gem list --local
        

        您甚至可以编写一个 ruby​​ 脚本将一个 gem 列表同步到另一个,但您必须小心平台特定的 gem....

        【讨论】:

          【解决方案4】:

          我在创建我的 gem jimmy_jukebox 时遇到了这个问题,但我的 gem 可以同时使用这两个。

          首先,JRuby 不处理fork...exec(甚至错误地回复Process.respond_to?(:fork)),所以我不得不rescue NotImplementedError 并改用Spoon.spawnp

          然后我创建了(在我的 gem 的 /bin 目录中)配对的可执行文件 -- play_jukeboxjplay_jukebox;和 load_jukeboxjload_jukebox - 每个都有正确的 shebang 行(/usr/bin/env ruby/usr/bin/env jruby)。

          我很想知道一个更好的方法。但我宁愿在一个 gem 中处理所有事情,而不是维护和分发多个 gem。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-18
            • 1970-01-01
            • 2018-06-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多