2010-06-29 14 views
5

Estoy usando capistrano para implementar mi proyecto Ruby on Rails. Estoy en un Dreamhost VPS y desde hace unas semanas, sin cambios en capistrano o pasajero, comencé a experimentar un extraño problema con la implementación:Implementar: symlink en capistrano señala el directorio "actual" a la versión anterior

Cada vez que capistrano está implementando mi aplicación, todo va bien excepto implementar: enlace simbólico (que se llama por defecto) que debe apuntar el directorio "actual" a la versión más reciente. Aunque la nueva versión se implementa correctamente en el directorio "releases", el problema es que el enlace simbólico "actual" siempre se establece en la versión anterior en lugar de la nueva. Entonces puedo implementar aplicaciones pero siempre tengo que ejecutar el despliegue dos veces seguidas.

Se puede ver el registro de Capistrano aquí: http://img715.imageshack.us/img715/7803/capistranoproblemb.png

Ha alguien más experimentado esto antes o puede ayudar a resolverlo?

Gracias!

Respuesta

6

Lo resolví con una tarea de implementación adicional que recrea el enlace simbólico usando un nombre de variable interna diferente con la ruta correcta a la última versión (release_path en lugar de latest_path o algo así).


namespace :deploy do 
    desc "Recreate symlink" 
    task :resymlink, :roles => :app do 
    run "rm -f #{current_path} && ln -s #{release_path} #{current_path}" 
    end 
end 

after "deploy:create_symlink", "deploy:resymlink", "deploy:update_crontab" 
+4

En el último Capistrano, es 'deploy: create_symlink' en lugar de' deploy: symlink'. – manafire

+2

Por favor, cambie la respuesta aceptada a la dada por @knocte. El kludge anterior puede funcionar, pero es un olor a código. – JellicleCat

+0

@JellicleCat: ¿qué versión de capistrano estás usando? – knocte

6

Creo que la respuesta de @ foresth no es una buena solución.

Creo que lo que pasa es que estás experimentando this horrible bug de capistrano.

La forma de trabajo en torno al fallo es el siguiente: NO LEA LA VARIABLE latest_release ante el Grupo deploy SUCEDE.

+0

Esta debería ser la respuesta aceptada. Ajustar mis tareas personalizadas de acuerdo con este error resolvió el problema. – brendan

+0

@brendan: ¿con qué versión de capistrano reprodujo el error? me están preguntando que en el problema de Github, vinculé ... – knocte

+0

Parece que fue 2.15.4 @knocte – brendan

Cuestiones relacionadas