Haben Sie duplizieren gem installiert für JRuby & MRI?
-
16-09-2019 - |
Frage
Ich habe JRuby und Ruby (MRT) installiert.Es scheint, dass ich brauche, um gems zu installieren zweimal - einmal für jede dieser Plattformen.Ist dies notwendig oder mache ich es falsch?Installiert, nachdem ich die rails-Juwel für die MRT sollte ich haben darauf hingewiesen, JRuby, um es, oder es war notwendig für mich auch anrufen:"jruby -S gem install rails"
Lösung
Wenn Sie GEM_HOME Sie können teilen Sie Ihre Edelstein-Installationen.
Andere Tipps
Zu installieren, müssen Sie Edelsteine, die für jeden anders installieren von ruby, die Sie haben.
Einige Edelsteine für bestimmte Plattformen, wie z.B.Mongrel (es gibt ein MRT und eine JRuby one).Auch, JRuby nicht verwenden Sie Edelsteine, die native Erweiterungen (d.h.C-code), es sei denn, Sie nutzen die FFI (die meisten nicht - noch nicht).
Persönlich habe ich separate Edelstein-repos für die MRT und JRuby.Die wenig zusätzlichen Aufwand Wert ist, den Frieden des Geistes, wenn Sie versuchen, um die Spur zu einem problem.
Es ist ziemlich einfach zu sehen, was jede repo installiert hat:
jruby -S gem list --local
vs.
gem list --local
Sie könnte sogar das schreiben eines ruby-Skripts synchronisiert, einen Edelstein Liste an die anderen, aber du musst vorsichtig sein, über die Plattform bestimmte Edelsteine....
Ich traf dieses problem beim erstellen meines Edelstein, jimmy_jukebox, aber mein Juwel Arbeit mit beiden.
Erste, JRuby nicht handhaben fork...exec
(und sogar antwortet falsch Process.respond_to?(:fork)
), so hatte ich zu rescue NotImplementedError
und verwenden Sie Spoon.spawnp
statt.
Dann habe ich (in meinem gem /bin-Verzeichnis) gepaart ausführbare Dateien, -- play_jukebox
und jplay_jukebox
;und load_jukebox
und jload_jukebox
-- jeder mit der richtigen shebang-Zeile (/usr/bin/env ruby
oder /usr/bin/env jruby
).
Ich würde gerne wissen, eine besser Weg.Aber ich würde lieber alles in einem einzigen Schmuckstück als pflegen und verteilen mehrere Edelsteine.