¿Tiene que ver la gema duplicado instala para JRuby y resonancia magnética que?
-
16-09-2019 - |
Pregunta
He instalado JRuby y Ruby (MRI). Parece que tengo que instalar gemas dos veces - una vez para cada una de estas plataformas. Es esto necesario o estoy haciendo mal? Después de instalar la gema rieles para la RM, debería haber señalado JRuby a ella, o era necesario que yo llamo también: "jruby -S joya instalar rieles"
Solución
Si define GEM_HOME puede compartir sus instalaciones de la gema.
Otros consejos
Es necesario instalar gemas diferentes para cada instalación de rubí que tiene.
Algunas gemas se dirigen a plataformas específicas, por ejemplo Mestizo (hay una resonancia magnética una vez y JRuby uno). Además, JRuby no puede usar gemas que tienen extensiones nativas (es decir, código C) a menos que utilizan el FFI (que la mayoría no - todavía).
Personalmente he repos joya separadas para resonancia magnética y JRuby. El poco de molestia adicional vale la paz de la mente cuando se trata de localizar a un problema.
Es bastante fácil ver lo que cada uno de recompra ha instalado:
jruby -S gem list --local
vs.
gem list --local
Incluso se podría escribir un script de rubí para sincronizar una lista de joya para el otro, pero usted tendría que tener cuidado con las gemas específicos de la plataforma ....
Me golpeó este problema al crear mi joya, jimmy_jukebox , pero hizo que mi trabajo joya con ambos.
En primer lugar, JRuby no manejar fork...exec
(e incluso responde incorrectamente a Process.respond_to?(:fork)
), así que tuve que rescue NotImplementedError
y utilizar Spoon.spawnp
lugar.
Entonces creé (en el directorio / bin de mi joya) ejecutables emparejado - play_jukebox
y jplay_jukebox
; y load_jukebox
y jload_jukebox
-. cada uno con la línea shebang correcta (/usr/bin/env ruby
o /usr/bin/env jruby
)
Me gustaría saber una mejor manera. Pero prefiero manejar todo dentro de una sola joya de mantener y distribuir múltiples gemas.