У меня установлен JRuby и Ruby (MRI). Кажется, мне нужно установить драгоценные камни дважды - один раз для каждой из этих платформ. Это необходимо, или я делаю это неправильно? После того, как я установил рельсы для магнитно-резонансной томографии, должен ли я указать JRuby на это, или мне было необходимо также позвонить: «jruby -S gem install rails»Вам нужно сделать дубликат установки gem для JRuby & MRI?
ответ
Если вы установили GEM_HOME, вы можете поделиться своими установками драгоценных камней.
Вам необходимо установить драгоценные камни для каждой отдельной установки рубина которые есть у тебя.
Некоторые драгоценные камни предназначены для определенных платформ, например. Mongrel (есть МРТ и JRuby). Кроме того, JRuby не может использовать драгоценные камни, у которых есть собственные расширения (например, код C), если они не используют FFI (которые больше всего не пока).
Лично у меня есть отдельные драгоценные камни для МРТ и JRuby. Немного лишних хлопот стоит спокойствия, когда вы пытаетесь выявить проблему.
Это довольно легко увидеть, что установил каждый репо:
jruby -S gem list --local
против
gem list --local
Можно даже написать рубиновый скрипт для синхронизации один список драгоценных камней на другой, но вы d должны быть осторожны с конкретными особенностями платформы ....
Я ударил эту проблему при создании моего драгоценного камня, jimmy_jukebox, но сделал мой драгоценный камень работой с обоими.
Во-первых, JRuby не обрабатывает fork...exec
(и даже отвечает неправильно, чтобы Process.respond_to?(:fork)
), так что мне пришлось rescue NotImplementedError
и использовать Spoon.spawnp
вместо этого.
Я создал (в каталоге моего gem's/bin) парные исполняемые файлы - play_jukebox
и jplay_jukebox
; и load_jukebox
и jload_jukebox
- каждая с правильной линией shebang (/usr/bin/env ruby
или /usr/bin/env jruby
).
Я хотел бы узнать лучший способ. Но я предпочел бы обрабатывать все в одном драгоценном камне, кроме как поддерживать и распространять несколько драгоценных камней.