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?

¿Fue útil?

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

http://gembundler.com/groups.html

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:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top