¿Se debe incluir Gemfile.lock en los repositorios?

55 views
Skip to first unread message

Martin Trejo

unread,
Apr 11, 2011, 10:05:55 PM4/11/11
to ruby-s...@googlegroups.com, rai...@googlegroups.com
Hola,

Estos días he estado configurando equipos para acceder a un mismo repositorio de trabajo. El proyecto es con Rails 3 y por consecuencia depende de bundler y el correspondiente Gemfile.

Gemfile.lock corresponde a la instalación de las gemas detallando las versiones y dependencias. Al hacer las diferentes instalaciones y configurar las gemas en cada máquina con bundler se generó un Gemfile.lock que varía entre algunos equipos. De ahí me surgió la duda sobre si es correcto incluir Gemfile.lock en el control de código fuente.

¿Comentarios?

Saludos,

Paco Viramontes

unread,
Apr 11, 2011, 10:12:04 PM4/11/11
to ruby-s...@googlegroups.com, rai...@googlegroups.com
Hay muchas dos escuelas de pensamiento con lo del Gemfile.lock y basicamente me da flojera seguir la discucion, yo creo que lo que va a ganar es incluirlo al repo de hecho heroku lo va a empezar a requerir y no se porque, yo creo que tiene sentido pero bueno

> --
> You received this message because you are subscribed to the Google Groups "Ruby SIG Mexico" group.
> To post to this group, send email to ruby-s...@googlegroups.com.
> To unsubscribe from this group, send email to ruby-sig-mex...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/ruby-sig-mex?hl=en.
>

Juan Alvarez

unread,
Apr 11, 2011, 10:19:56 PM4/11/11
to ruby-s...@googlegroups.com
Yo voto por que si lo incluyas. La idea es que tengas exactamente las mismas dependencias
(y dependencias de dependencias) en desarrollo, producción y staging.

Saludos,
ja

Edgar Suarez

unread,
Apr 11, 2011, 11:12:19 PM4/11/11
to rai...@googlegroups.com, ruby-s...@googlegroups.com
La teoría es que para aplicaciones en producción incluyas el lock, ya
que te aseguras de que tu aplicación funcione bien con las versiones
de las gemas con las que la desarrollaste, sin embargo su estás
haciendo una gema no se recomienda, ya que para eso es el gemspec.

Sin embargo, durante el desarrollo no lo recomendaría porque muchas
veces las versiones de las dependencias cambian, aunque esto te obliga
a estar checando que cada nueva versión sea compatible con tu app,
cosa que no siempre queremos.

Por último como tip, te recomiendo siempre especificar las versiones
de tus dependencias, porque muchas gemas están en desarrollo constante
y puede que una nueva versiób truene tu aplicación. Esto mismo me
sucedió con devise en el sitio de rails.mx, por eso de pronto les
decía que su contraseña era incorrecta y no podían loggearse aunque
estuvieran metiendo la contraseña correcta. Siempre trato de leer el
changelog de una versión antes de actualizar. Y en mi gemfile tengo
versiones "limitadas", como "~> 1.2". Esto me asegura que puedo tener
updates de versiones 1.2.x pero sin llegar a la 1.3, que generalmente
son cambios importantes.

Saludos

edgar.js

Gustavo Barron

unread,
Apr 11, 2011, 11:12:41 PM4/11/11
to rai...@googlegroups.com, Martin Trejo, ruby-s...@googlegroups.com
2011/4/11 Martin Trejo <chilli...@gmail.com>:

> Hola,
>
> Estos días he estado configurando equipos para acceder a un mismo repositorio de trabajo. El proyecto es con Rails 3 y por consecuencia depende de bundler y el correspondiente Gemfile.
>
> Gemfile.lock corresponde a la instalación de las gemas detallando las versiones y dependencias. Al hacer las diferentes instalaciones y configurar las gemas en cada máquina con bundler se generó un Gemfile.lock que varía entre algunos equipos. De ahí me surgió la duda sobre si es correcto incluir Gemfile.lock en el control de código fuente.

Deberías incluirlo en el VCS.
>
> ¿Comentarios?

Parte del hecho en las diferencias de funcionamiento en Bundler de
`bundle instal` y `bundle update`.

La versión simplificada, básicamente “install” utiliza el Gemfile.lock
como el ‘manifest’ de gemas a instalar, manteniendo mismos números de
versiones y update, revisara con los repositorios canónicos o
especificados en el Gemfile por nuevas versiones (siempre y cuando no
se haya especificado una en el Gemfile.

El workflow ideal, seria que siempre utilizaras `bundle install` y
solo como una actividad de mantenimiento (quizás en un fork de tu
VCS), hacer un `bundle update` revisando pequeños cambios de
configuración, revisar por funciones o métodos jubilados y quizás
cambios de implementación en algo de tu código. Evitando de esta forma
romper el funcionamiento de tu aplicación.

Heroku siempre realiza `bundle install`, dado que es mas rápido,
excepto, cuando detecta cambios en el Gemfile.lock

Saludos,

Gustavo
>
> Saludos,

Reply all
Reply to author
Forward
0 new messages