Pergunta

Eu tenho JRuby e Ruby (MRI) instalado. Parece que eu preciso para instalar gemas duas vezes - uma vez para cada uma dessas plataformas. Isso é necessário ou eu estou fazendo errado? Depois que instalei o gem trilhos para MRI, eu deveria ter pontas JRuby a ele, ou era necessário que eu também chamar: "jruby -S gem install rails"

Foi útil?

Solução

Se você definir GEM_HOME você pode compartilhar suas instalações gema.

Outras dicas

Você precisará instalar gemas para cada diferente instalação de rubi que você tem.

Algumas gemas alvo plataformas específicas, por exemplo, Mongrel (há um MRI e um JRuby). Além disso, JRuby não pode usar pedras preciosas que têm extensões nativas (código ou seja C) a menos que eles usam a FFI (que a maioria não - ainda).

Pessoalmente, tenho repos gem separadas para MRI e JRuby. O pouco de aborrecimento extra vale a pena a paz de espírito quando se tenta rastrear um problema.

É muito fácil ver o que cada um repo tem instalado:

jruby -S gem list --local

vs.

gem list --local

Você pode até escrever um script ruby ??para sincronizar uma lista gem para o outro, mas você tem que ter cuidado com gemas plataforma específica ....

Eu bati este problema ao criar minha jóia, jimmy_jukebox , mas fiz o meu trabalho gem com ambos.

Em primeiro lugar, JRuby não controla fork...exec (e até mesmo responde: incorretamente para Process.respond_to?(:fork)), então eu tive que rescue NotImplementedError e uso Spoon.spawnp vez.

Eu, então, criado (em / bin do meu GEM) emparelhado executáveis ??- play_jukebox e jplay_jukebox; e load_jukebox e jload_jukebox -. cada um com a linha shebang correta (/usr/bin/env ruby ou /usr/bin/env jruby)

Eu adoraria saber uma maneira melhor. Mas eu prefiro lidar com tudo dentro de uma única gem de manter e distribuir vários gemas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top