ruby rubygems dependencies bundler gemspecs

Dependencia de Ruby Gemspec: ¿Es posible tener una dependencia de git branch?



rubygems dependencies (3)

Esto no es posible, y probablemente nunca lo será, porque sería bastante difícil para RubyGems permitir que los desarrolladores de gemas exijan que los usuarios tengan instalado un sistema de control de versiones específico para acceder a una gema. Las gemas deben ser autónomas con un número mínimo de dependencias para que las personas puedan usarlas en la mayor variedad posible de aplicaciones.

Si desea hacer esto para sus propios proyectos internos, mi sugerencia sería usar Bundler que lo soporte bastante bien.

Es posible tener una dependencia de rama git, dentro de mygem.gemspec?

Estoy pensando algo similar a lo siguiente:

gem.add_runtime_dependency ''oauth2'', :git => ''[email protected]:lgs/oauth2.git''

... pero no funciona.


Solo estaba tratando de resolver este problema también. Y acabo de llegar a la siguiente solución (que no estoy seguro si publicas tu gema o tienes derechos para redistribuir esa gema oauth2).

En tu gema que requiere la gema oauth2 ejecuta esto.

git submodule add [email protected]:lgs/oauth2.git lib/oauth2

Si necesita una sucursal diferente a la predeterminada

cd lib/oauth2 && git checkout <branchname_or_ref> cd .. && git add lib/oauth2 git commit -m "adding outh2 submodule"

En su gemspec, agregue esto encima de su línea de versión requerida

$:.push File.expand_path(''../lib/oauth2/lib'', __FILE__)

También necesitarás agregar todas las dependencias de tiempo de ejecución de la gema oauth2 a tu gemspec. No he encontrado una forma de evitar esto todavía.

Esto es lo que hice, y funciona para nosotros porque nuestra joya se requiere a través de git, así que no estoy seguro si esto funcionaría para una gema publicada rubygems.


EDITAR

De acuerdo con un comentarista, esto ya no es cierto. Información previa retenida por contexto histórico.

Duplicar la referencia a una gema en Gemfile y .gemspec ahora parece generar un mensaje de advertencia en Bundler, por lo que esta respuesta parece no ser cierta.

Información desactualizada

This artículo de Yehuda Katz me aclara una confusión similar. Dice que, para usarlo solo en desarrollo, es mejor agregar las cosas git en el archivo gem, pero ese paquete aún usará la información de dependencia / versión del gemspec (me parece mágico, pero confío en Yehuda).