Escenario: Estoy desarrollando una gema gem-foo
, usando Bundler. Tengo una dependencia en gem-bar
, que he comprobado localmente para el desarrollo. Puedo declarar esta dependencia en el Gemfile
como:¿Cómo puedo usar la regla "gemspec" en Bundler, mientras sigo usando el pago local de una gema?
gem "gem-bar", :path => "/path/to/local/gem-bar"
Sin embargo, al desarrollar una joya de la "mejor práctica" parece ser la de definir las gemas requeridas en el gem-foo.gemspec
a través de:
s.add_runtime_dependency 'gem-bar'
y luego basta con incluir las dependencias en el Gemfile
usando:
gemspec
lo que me gustaría hacer es añadir la dependencia de tiempo de ejecución en la gema en el gemspec, pero haga algunas modificaciones locales en gem-bar
y tenga un bundle install
use el pago del desarrollo local. Supongamos el caso en el que controlo ambas gemas, y las estoy pirateando de forma concurrente, y presionaré las nuevas versiones simultáneamente. I podría solo comentar el s.add_runtime_dependency
en gemspec y agregarlo con la ruta local en el Gemfile, pero eso parece ... propenso a errores? El gemspec debe declarar siempre esta dependencia, y el Gemfile debe poder anular la ubicación que Bundler debería usar para la gema. Sin embargo, si en realidad se hace esto, se obtiene el siguiente error:
You cannot specify the same gem twice coming from different sources. You specified that gem-bar (>= 0) should come from an unspecfied source and source at /path/to/local/gem-bar
Idealmente, me gustaría simplemente tienen algún tipo de anulación local, ya que nunca quiero el caso de que accidentalmente me empujo la gema con el requisito de un local gem-bar
en una ruta específica. Eso sería tonto.
¿Alguien tiene una buena solución para este caso de uso?
Para instalar en "proveedor/paquete", haga 'paquete install --path vendor/bundle'. Una vez que está instalado allí, y tienes un Gemfile.lock, también puede usar 'bundle install --deployment' para entornos que no sean de desarrollo. – Brett
¡Está bien! Eso es lo que recuerdo. Gracias. Estaba cansado cuando lo publiqué y solo lo usé unas cuantas veces. Solo estoy investigando a rbenv estos días. Parece ser bastante directo. Yehuda Katz escribió algunas cosas bastante buenas sobre qué camino tomar con este tema. Las mejores prácticas como el desarrollo de gemas y todo. –