2

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

4

4 回答 4

4

您需要为您拥有的每个不同的 ruby​​ 安装安装 gems。

于 2009-04-25T10:28:33.663 回答
3

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

于 2009-04-26T03:58:45.243 回答
1

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

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

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

jruby -S gem list --local

对比

gem list --local

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

于 2009-05-04T05:23:24.117 回答
1

我在创建我的 gem 时遇到了这个问题,jimmy_jukebox,但是让我的 gem 可以同时工作。

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

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

我很想知道更好的方法。但我宁愿在单个 gem 中处理所有内容,也不愿维护和分发多个 gem。

于 2011-08-22T17:10:23.453 回答