我安装了JRuby和Ruby(MRI)。似乎我需要安装两次宝石 - 每个平台一次。这是必要的还是我做错了?在我安装了用于MRI的rails gem后,我是否应该将JRuby指向它,或者我还需要打电话:“jruby -S gem install rails”
答案 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_jukebox
和jplay_jukebox
;以及load_jukebox
和jload_jukebox
- 每个都有正确的shebang行(/usr/bin/env ruby
或/usr/bin/env jruby
)。
我想知道更好的方法。但我宁愿处理一个宝石中的所有东西,而不是维护和分发多个宝石。