Iniciando touched_job na startup
-
19-09-2019 - |
Pergunta
Estou usando touched_job com o Capistrano e gostaria de iniciar o atraso_job na inicialização do aplicativo da web usando o 'script/touched_job start'. Dessa forma, o Capistrano pode reiniciá -lo na implantação. Se o servidor for reiniciado, meus touched_jobs devem iniciar o projeto.
Como posso fazer isso? Devo estar procurando fazer isso nos arquivos do ambiente ou como um inicializador?
Solução
Você deve criar uma receita com o comando de reinicialização.
namespace :delayed_job do
desc "Restart the delayed_job process"
task :restart, :roles => :app do
run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job restart"
end
end
Em seguida, você o adiciona para ser executado no final da sua implantação.
after "deploy:update_code", "delayed_job:restart"
Outras dicas
Em combinação com a receita de reinicialização do Capistrano, é bastante conveniente usar o Cron para também iniciar o daemon touched_job na startup usando o especial @reboot
tempo em um crontab:
@reboot /bin/bash -l -c 'cd /path/to/app && RAILS_ENV=production script/delayed_job restart'
E é ainda mais conveniente junto com em qualquer momento Para configurar uma tarefa agendada:
job_type :envcommand, 'cd :path && RAILS_ENV=:environment :task'
every :reboot do
envcommand 'script/delayed_job restart'
end
Não tenho certeza se toda a implementação do Cron realmente só é executada @reboot
Na inicialização do sistema, mas pelo menos o Ubuntu costuras para executá -las apenas no início e não sempre que o daemon Cron inicia ou reinicie. Se você passar restart
para script/delayed_job
Provavelmente funcionará em ambos os casos.
Um pouco atrasado para esta pergunta, mas a versão 2.1.4 de touched_job possui receitas capistano:
https://github.com/collectiveidea/delayed_job/wiki/rails-3-and-capistrano
É a resposta de Damien Mathieu, mas já parte da jóia tardia_job.
Isso agora funciona com os Rails 2 e 3:
Em Implement.rb, adicione as seguintes linhas:
require "delayed/recipes"
set :rails_env, 'production' #added for delayed_job
before "deploy:restart", "delayed_job:stop"
after "deploy:restart", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"
after "deploy:start", "delayed_job:start"
É possível inicializar e monitorar touched_job com Monit:
Como monitorar touched_job com monit