2010-12-15 4 views
0

Ma série de cap deploy échoue, et je pense que c'est à cause d'un problème de formatage. Voici quelques sortie:échec du capistrano - où est défini le déploiement du plafond?

* executing "rm -rf /var/www/cap-deploy/socialmit/releases/20101215141011/log /var/www/cap-deploy/socialmit/releases/20101215141011/public/system /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids &&\\\n  mkdir -p /var/www/cap-deploy/socialmit/releases/20101215141011/public &&\\\n  mkdir -p /var/www/cap-deploy/socialmit/releases/20101215141011/tmp &&\\\n  ln -s /var/www/cap-deploy/socialmit/shared/log /var/www/cap-deploy/socialmit/releases/20101215141011/log &&\\\n  ln -s /var/www/cap-deploy/socialmit/shared/system /var/www/cap-deploy/socialmit/releases/20101215141011/public/system &&\\\n  ln -s /var/www/cap-deploy/socialmit/shared/pids /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids" 

(Désolé pour la mise en forme.)

Les &&\\\n choses semblent vraiment louche, et même les jeter dans ma console provoque une sortie de `\ n: command not found.

Où est défini cap deploy? Il semble que le problème a quelque chose à voir avec le fait qu'il soit défini comme une liste de commandes qui ne sont pas correctement formatées, conduisant à la nouvelle ligne qui rejette des choses. Mais je ne peux pas trouver le code réel pour cap deploy pour le réparer. Cela ne semble pas être une chose spécifique à une application, car ce n'est pas dans mon fichier Capfile ou dans l'un des fichiers référencés par Capfile.

Répondre

1

La question est que certaines tâches définies par l'utilisateur nommé after_symlink devait être renommé et invoqué après le lien symbolique en utilisant la syntaxe after("deploy:symlink", "deploy:new_name"):

problème

:

namespace :deploy do 
    desc "Symlink the upload directories" 
    task :after_symlink do 
    #run "mkdir -p #{shared_path}/uploads" 
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link" 
    end 
end 
erreur

(en fait un avertissement):

Deprecation Warning] Naming tasks with before_ and after_ is deprecated, please see the new before() and after() methods. (Offending task name was after_update_code) 
[Deprecation Warning] Naming tasks with before_ and after_ is deprecated, please see the new before() and after() methods. (Offending task name was after_symlink) 

bonne façon de le faire:

namespace :deploy do 
    desc "Symlink the upload directories" 
    task :link_db do 
    #run "mkdir -p #{shared_path}/uploads" 
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link" 
    end 
end 

after("deploy:symlink", "deploy:link_db") 

Le problème avec l'entreprise \\\n était un mauvais diagnostic de ma part. Apparemment, c'est bien fait.

0

La tâche de déploiement est définie dans la gemme here.

Je dirais que ce n'est probablement pas le problème. Quelle erreur soulève-t-elle lorsque le déploiement échoue?

+0

Merci pour le lien. En effet, le problème était dû au fait que capistrano n'exécutait pas la commande de symlink en raison de sa définition comme after_symlink (la convention a changé). Ajouter plus de détails dans une solution ci-dessous. – unsorted

Questions connexes