您是否必须为JRuby& amp; MRI?

时间:2009-04-25 02:56:26

标签: ruby installation jruby gem

我安装了JRuby和Ruby(MRI)。似乎我需要安装两次宝石 - 每个平台一次。这是必要的还是我做错了?在我安装了用于MRI的rails gem后,我是否应该将JRuby指向它,或者我还需要打电话:“jruby -S gem install rails”

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

我个人对MRI和JRuby有单独的宝石回购。在试图追查问题时,一点点额外的麻烦都值得安心。

很容易看出每个仓库的安装情况:

jruby -S gem list --local

VS。

gem list --local

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

答案 3 :(得分:1)

我在制作我的宝石jimmy_jukebox时遇到了这个问题,但是让我的宝石同时工作。

首先,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)。

我想知道更好的方法。但我宁愿处理一个宝石中的所有东西,而不是维护和分发多个宝石。