Перезапуск сервисов после развертывания Capistrano Rails - PullRequest
0 голосов
/ 28 апреля 2020

Мой сайт разворачивается с помощью Capistrano. Как я могу заставить delayed_job и эластичный поиск перезапустить после завершения развертывания?

1 Ответ

0 голосов
/ 28 апреля 2020

Вам нужно создать delayed_job.rake в lib/capistrano/tasks


# delayed_job.rake
namespace :delayed_job do
  def args
    fetch(:delayed_job_args, '')
  end

  def delayed_job_roles
    fetch(:delayed_job_server_role, :app)
  end

  desc 'Stop the delayed_job process'
  task :stop do
    on roles(delayed_job_roles) do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :bundle, :exec, :'bin/delayed_job -n 1', :stop
        end
      end
    end
  end

  desc 'Start the delayed_job process'
  task :start do
    on roles(delayed_job_roles) do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :bundle, :exec, :'bin/delayed_job -n 1', args, :start
        end
      end
    end
  end

  desc 'Restart the delayed_job process'
  task :restart do
    on roles(delayed_job_roles) do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :bundle, :exec, :'bin/delayed_job -n 1', args, :restart
        end
      end
    end
  end
end

и в вашем config / deploy.rb добавить следующие строки

after :publishing, :restart

task :restart do
  invoke 'delayed_job:restart'
end
...