Cómo personalizar Gemfile por desarrollador?
Pregunta
Hay un patrón común:
hay muchos desarrolladores que trabajan en un proyecto y el Gemfile (.lock) se comparte a través de SMC. Pero lo que si algunos desarrolladores quieren utilizar diferentes herramientas para pruebas y desarrollo? ¿Cómo hacerlo?
El problema es que cuando se pone secciones condicionales a su Gemfile, también la Gemfile.lock será diferente para cada desarrollador y por lo tanto obtendrá un conflicto cada vez que se comprometan a SMC.
¿Hay alguna solución simple, ampliamente reconocido?
Solución 6
supongo que el método install_if
(añadido recientemente) resuelve el problema:
install_if -> { `whoami`.strip == 'jakub' } do
gem "pry-rails"
end
http://bundler.io/v1.14/ hombre / gemfile.5.html # INSTALL_IF
Otros consejos
Me gustaría tener esto en mi Gemfile:
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local"
if File.file?(local_gemfile)
require local_gemfile
end
También tiene Gemfile.local y Gemfile.lock en gitignore. Sé que no estoy "supone que", pero no creo que las advertencias (como los que mencionas en tu pregunta) valen la pena.
UPDATE para Bündler 1.0.10 como 3 de marzo de 2011
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local.rb"
if File.file?(local_gemfile)
self.instance_eval(Bundler.read_file(local_gemfile))
end
he tenido que usar esto con los carriles 3 y Bündler 1.0.10.
Si marca en algo que depende de una joya que la gema debe estar en el Gemfile. Si el código en el repositorio no depende de una joya, no hay necesidad de tenerlo en el Gemfile. Por lo tanto, a menos que sus desarrolladores no comprueban en sus pruebas (lo que sería raro) que tendría que todas las dependencias de la prueba si desea ejecutar todas las pruebas de todos modos.
Si las gemas no son necesarios para ejecutar la aplicación o sus pruebas de las gemas no necesitan estar en el Gemfile. Sólo tiene cada desarrollador crear un gemset (supongo que está utilizando RVM, si no lo hace debe) para la aplicación e instalar todo lo que necesitan allí, y luego sólo tiene que añadir lo que las necesidades de aplicaciones para correr a la Gemfile.
Puede utilizar el indicador de without
Bündler excluir a los grupos.
Si usted tiene la siguiente Gemfile
group :jakubs_testing_tools do
gem "rspec"
gem "faker"
end
Se puede excluirlos con bundle install
$ bundle install --without jakubs_testing_tools
Esto no te ayuda en este momento, pero ha habido un solicitud de función Bündler para añadir soporte para un Gemfile.local para las edades. Está previsto que en algún lugar de la serie 1.x, así que estad atentos.
Si su principal problema es gemas IRB-desarrollador específica, hay un par de soluciones en el tema comentarios.
Cada desarrollador puede crear su propia rama - Bündler funciona bien con diferentes ramas que tienen diferentes contenidos Gemfile. Es una buena idea para que los desarrolladores nombres del prefijo de sucursal con sus iniciales, para evitar confusiones o colisiones.
(básicamente la misma idea que en el comentario de August Lilleaas: gitignore)
Ponga la Gemfile default / mínima en SMC y luego tienen los desarrolladores cambian en sus sistemas y nunca se comprometen. Haga que añadirlo a su conjunto de cambios inactivo en su cliente SVN (si utilizan uno), otros SCM deben tener algo similar.
Esta es la forma en que hacemos esto en mi empresa - funciona muy bien:)