2012-06-22 15 views
9

Estoy trabajando en una gema y está en github.por qué la gema aún está desactualizada después de la actualización del paquete

Cuando incluyo la gema en una aplicación, hacen un despliegue Capistrano, y (en el servidor) Run:

bundle outdated 

veo:

* authengine (0.0.1 d8baa49 > 0.0.1 de43dfa) 

que me dice que una más reciente commit está disponible. ¿Por qué la actualización del paquete (parte de la implementación de Capistrano) no extrae la versión más reciente? No hay restricción de versión en el Gemfile de la aplicación de host, y de todos modos tienen el mismo número de versión, solo commits diferentes.

Incluso si me registro en el servidor y ejecute

bundle update authengine 

consigo mismo "obsoleta" número después.
¿Qué me falta aquí?

+0

¿Está cometiendo su 'Gemfile.lock' por casualidad? –

+0

Gracias por la sugerencia, Matenia. Estaba cometiendo Gemfile.lock pero no lo estoy haciendo ahora, y no ha hecho la diferencia. –

+0

nah .. deberías confirmar Gemfile.lock siempre que sea posible ... se asegura de que mantengas tus versiones de gema sincronizadas entre dev y prod (siempre que no se necesiten gemas específicas del sistema), has intentado especificar el ': ref = > argumento 'de43dfa'' antes de ejecutar la actualización del paquete (solo una sugerencia para forzarlo a usar la referencia correcta) –

Respuesta

2

¿Cuál es la salida devuelta cuando ejecuta bundle update authengine? ¿De verdad dice que actualizó la gema? ¿O ignora la gema?

Puede intentar usar el parámetro --source para decirle específicamente a Bundler que use el repositorio de git. Eso, o su

bundle update authengine --source https://github.com/mustardseeddatabase/authengine.git 

Además, cuando las cosas inesperadas como este ocurren, me gusta limpiar mi gemlist en general. Puede ser que todavía tengas versiones anteriores de la gema, no las uses en el paquete.

por lo que podría hacer:

gem list 
gem check 
gem cleanup 

O hacer una reinstalación completa

gem uninstall authengine 
bundle install 
+0

Gracias por las sugerencias, JeanMertz. Cuando lo hago paquete de actualización. Dice "Using authengine (0.0.1) from git: //...etc. Así que está usando lo que está instalado en lugar de ir a buscar una nueva copia. Probé tus otras sugerencias, también, sin éxito. Gracias, sin embargo. –

11

Una cosa que he encontrado que puede causar esto es si otras gemas en el paquete hacen exigencias sobre gemas versión que es incompatible Bundler intenta reconciliar estos seleccionando versiones de gemas de modo que todos sus requisitos puedan ser satisfechos. El resultado es que silenciosamente se niega a actualizar las gemas.

El camino a check esto es establecer un requisito de versión explícita en su Gemfile. Algo así como

gem "authengine", "> 0.0.2" #(you'll need to bump the version to make this work) 
#or 
gem "authengine", :ref => "d8baa49" 

A continuación, ejecute

bundle update authengine 

debería ver algo así (esto es tomado de mi caso particular):

Bündler no pudo encontrar versiones compatibles para joya "json" : En Gemfile: chef (> 10.8) ruby ​​depende de json (< = 1.6.1,> = 1.4.4) ruby ​​

logical-construct (>= 0) ruby depends on 
    json (1.7.5) 

Por lo tanto, en mi caso se trata de un problema que requiere explícitamente una versión más reciente de JSON.

+0

Gracias usted - gran información. Estaba realmente confundido por este comportamiento, así que probé lo que sugirió y vi el mismo tipo de error silencioso. Deseo que la "actualización del paquete" brinde un poco más de comentarios sobre estas fallas. – MothOnMars

+0

Gracias por la sugerencia con respecto a configurar manualmente la versión esperada para averiguar qué es lo que genera el conflicto. – mokagio

Cuestiones relacionadas