10
votes

Le travail retardé ne commencera pas à utiliser Capistrano

Je ne peux pas démarrer le processus de travail retardé à l'aide d'une recette de capistrano. Voici l'erreur que je reçois. XXX PRE>

Voici le Capistrano Code (NOTE-: J'ai essayé les commandes de démarrage / redémarrage) P>

executing command
 [err :: my_server] /usr/local/lib/ruby/gems/1.9.1/gems/delayed_job-2.1.1/lib/delayed/command.rb:62:in `mkdir': File exists - /my_app/server/releases/20101120001612/tmp/pids (Errno::EEXIST)
 [err :: my_server] from /usr/local/lib/ruby/gems/1.9.1/gems/delayed_job-2.1.1/lib/delayed/command.rb:62:in `daemonize'
 [err :: my_server] from script/delayed_job:5:in `<main>'
    command finished
failed: "sh -c 'cd /my_app/server/current; RAILS_ENV=production script/delayed_job -n 3 restart'" on myserevr


0 commentaires

6 Réponses :


1
votes

Ajoutez la création de ce répertoire avant

after "deploy:restart", "delayed_job:start"
task :start, :roles => :app do  
  run "mkdir #{current_path}/tmp/pids"
  run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job -n 2 start"
end


0 commentaires

4
votes

Voici comment j'ai corrigé le problème, j'ai passé un paramètre explicite PIDS DIR en utilisant "--Pid-dir". Je ne sais pas si c'est parfait, mais cela a fonctionné.

task :restart, :roles => :app do
  run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job -n #{dj_proc_count} --pid-dir=#{app_root}/shared/dj_pids restart"
end


0 commentaires

10
votes

J'ai aussi reçu cette erreur et j'ai trouvé quelques problèmes:

  • Assurez-vous d'avoir un dossier partagé / pids PIDS>. LI>
  • Assurez-vous d'avoir la configuration correcte des crochets li> ul>

    Votre script deploy.rb doit contenir: P>

    require "delayed/recipes"
    
    after "deploy:stop", "delayed_job:stop"
    after "deploy:start", "delayed_job:start"
    after "deploy:restart", "delayed_job:restart"
    


4 commentaires

Pareil ici. S'est passé lors de l'utilisation du paramètre Little-connu Shared_children de Capistrano. Résolu par Symlinking en partage: ln -s TMP / PIDS .


Réponse très utile a résolu mon problème. Merci beaucoup!


@ZUBIN, @wallerjake et @hilt: Je pense avoir le même problème de symbolisation: Actuelle / TMP / PIDS -> /var/www/apps/production.mysserver.de/shared/pids Alors Dois-je aller au /var/www/apps/production.myserver.de/shared -Directory et entrez le ln -s tmp / pids -Command? Je ne suis pas vraiment ferme dans les commandes Unix :( merci!


ok la seule chose que je dois faire était de créer le pids -Directory dans /var/www/apps/production.myserver.de/shared :)



21
votes

Voir le même problème.

Il s'avère que je manquais le ~ / apps / applications / nom_fr / pids / pids .

Enfin, la création de cela a fait disparaître ce problème.

Nul besoin de configurer la personnalisation dj_pids .


0 commentaires

0
votes

Étant donné que la création des répertoires est bon marché et rapide, utilisez le rappel suivant:

before 'deploy', 'deploy:setup'


0 commentaires

1
votes

J'ai eu le même problème. S'est avéré qu'il y avait un existant

Application_Name / partagé / PIDS / DeleDeD_JOB.MAIN.PID

fichier, qui avait des autorisations de propriétaire incorrectes, ce qui a entraîné l'échec du déploiement. Fixer les autorisations de ce fichier a résolu le problème pour moi.


0 commentaires