Tengo una aplicación Sinatra que requiere otra gema que estoy desarrollando localmente. Tengo problemas para configurar Bundler para usar mi código de gema local durante el desarrollo, pero mi código de gema que se vende está en producción.¿Cómo se puede configurar Bundler/Gemfile para usar diferentes fuentes de gemas durante el desarrollo?
Lo ideal sería que pudiera hacer algo como esto, pero Bündler no permitirá especificar la misma joya dos veces:
# Doesn't work:
group :development do
gem 'awesome', :path => "~/code/awesome"
end
group :production do
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
end
Mientras tanto he recurrido a vendoring manualmente la gema & la actualización de la fuente de la gema en el Gemfile cada vez que lo despliego, lo cual es bastante complicado. Mi flujo de trabajo es la siguiente:
- punto a mi joya local durante el desarrollo (
gem 'awesome', :path => "~/code/awesome"
) - Cuando esté listo para implementar, joya de desempaquetado en
vendor/gems
- actualización Gemfile para señalar a vendored joya (
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
) - Run
bundle install
(para actualizar Gemfile.lock) código - Implementar
- Volver al paso 1.
¡Qué molestia! Me gustaría hacer algo más simple que simplemente escribir tareas de Rake para automatizar mi configuración actual.
Cuál es la mejor flujo de trabajo para este escenario?
Intenté lo que este artículo sugiere anteriormente, y en su mayor parte está bien. El problema es que cuando impleno, Gemfile.lock se refiere a mi gema local (vea sus dos últimos ejemplos de código). Supongo que podría instalar gemas de producción localmente y luego implementar o excluir Gemfile.lock de git por completo ... pero no estoy seguro de que ninguna de esas opciones sea el mejor método. –
Sí, quiero lograr lo mismo, pero parece que no hay una forma clara de hacerlo. –