2009-01-27 13 views
8

¿Es posible establecer condicionalmente una dependencia en una gema en el momento de la instalación? Aquí está mi situación, que con suerte aclarará la pregunta.Dependencias de gemas condicionales

Hay una joya que mantengo que depende de la gema json. Sin embargo, frecuentemente uso jruby que tiene un puerto de la gema json que se llama json-jruby. Para solucionar esto, tengo que construir dos gemas separadas para cada dependencia. Me gustaría construir una gema que diga que depende de json O json-jruby, o verifica en el momento de la instalación y usa la dependencia correcta.

¿Alguien tiene una buena solución para esto?

Respuesta

3

Hmm,

creo que uno puede codificar múltiples dependencias porque me he dado cuenta de gemas que parecían hacer esto. Pero te aconsejaría que no lo hicieras. No importa qué tan simple sea el código que está insertando aquí, cuando considera que el usuario va a cargar una gema que depende de otra que depende de otra, incluso un pequeño error en la lógica de una parte u otra puede hacer que todo la dependencia entrena una pesadilla.

Por lo tanto, dejaría su kludge como está. Además, te sugiero que tengas una tarball que los usuarios puedan descargar también. Tuve que extraer manualmente el código dentro de las gemas cuyo código de configuración no me permitía instalarlas.

3

la caja un poco tutorial aquí: http://wiki.github.com/rdp/ruby%5Ftutorials%5Fcore/gem

se muestra cómo instalar diferentes versiones de dependencias dependiendo de qué versión de rubí la installée está utilizando.

(respuesta corta - no es tan fácil como debería ser)

+1

Enlace se ha trasladado a: http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using –

+0

Yehuda Katz dice que esto es una mala idea Y sugiere poner un condicional en gemspec y construir dos versiones. –

+0

condicionales en el gemspec puede controlar "jruby versus mri" pero (hasta el momento) no puede controlar, digamos 1.8 contra 1.9 gemas. Estoy de acuerdo con Yehuda es una mala idea, pero no estoy al tanto de un trabajo alternativo para ello además de esto actualmente. – rogerdpack

Cuestiones relacionadas