Нужно ли делать повторные установки гемов для JRuby & MRI? - PullRequest
2 голосов
/ 25 апреля 2009

У меня установлены JRuby и Ruby (MRI). Кажется, мне нужно установить гемы дважды - по одному для каждой из этих платформ. Это необходимо или я делаю это неправильно? После того, как я установил гем рельсов для МРТ, я должен был указать на него JRuby, или мне было необходимо также вызвать: "jruby -S gem install rails"

Ответы [ 4 ]

4 голосов
/ 25 апреля 2009

Вам необходимо установить гемы для каждой отдельной установки ruby.

3 голосов
/ 26 апреля 2009

Если вы установили GEM_HOME, вы можете поделиться своими установками gem.

1 голос
/ 22 августа 2011

Я столкнулся с этой проблемой при создании моего драгоценного камня, jimmy_jukebox , но заставил мой драгоценный камень работать с обоими.

Во-первых, JRuby не обрабатывает fork...exec (и даже неправильно отвечает на Process.respond_to?(:fork)), поэтому мне пришлось rescue NotImplementedError и использовать Spoon.spawnp вместо.

Затем я создал (в каталоге / bin моего gem) парные исполняемые файлы - play_jukebox и jplay_jukebox; load_jukebox и jload_jukebox - каждая с правильной линией Шебанга (/usr/bin/env ruby или /usr/bin/env jruby).

Я бы хотел узнать лучший способ. Но я предпочел бы обрабатывать все внутри одного драгоценного камня, чем поддерживать и распространять несколько драгоценных камней.

1 голос
/ 04 мая 2009

Некоторые драгоценные камни предназначены для определенных платформ, например, Шавка (есть МРТ и JRuby). Кроме того, JRuby не может использовать гемы с собственными расширениями (например, C-кодом), если они не используют FFI (а большинство - нет).

Лично у меня есть отдельные репозитории для MRI и JRuby. Немного лишних хлопот стоит спокойствия, когда пытаешься отследить проблему.

Довольно легко увидеть, что установлено в каждом репо:

jruby -S gem list --local

против.

gem list --local

Вы могли бы даже написать скрипт ruby ​​для синхронизации одного списка драгоценных камней с другим, но вам нужно быть осторожным с драгоценными камнями, специфичными для платформы ....

...