2016-02-28 91 views
0

我正在玩Sidekiq并使用Capistrano来部署应用程序。Sidekiq与Capistrano(2.x) - 是否需要设置每次delpoyment后重新启动Sidekiq?

到目前为止,我现在用的是gem 'capistrano-sidekiq' , group: :development宝石和我以前用DelaydedJob,我需要从我目前部署文件删除这些行:

set :delayed_job_command, "bin/delayed_job" 
after "deploy:start", "delayed_job:start" 
after "deploy:stop", "delayed_job:stop" 

什么我需要添加到Capistrano的为Sidekiq到确保Sidekiq将运行所有的时间(意味着它不会被打断/后我一些代码部署到服务器停止?

或自动做宝石(重新)已作出一切部署后开始Sidekiq?

+1

您希望sidekiq重新启动。如果没有,那么你的工作将会有陈旧的代码。所有这些都在内存中运行。所以如果你更新你的rails代码,只是部署新的代码将不会更新sidekiq中运行的代码。 – unflores

+0

我回答了您的问题吗? – noname

回答

0

Sid部署后,ekiq会在Capistrano 2.x中自动重新启动。

Capistrano酒店 - sidekiq宝石负责管理,它说:

if fetch(:sidekiq_default_hooks) 
    before 'deploy:update_code', 'sidekiq:quiet' 
    after 'deploy:stop', 'sidekiq:stop' 
    after 'deploy:start', 'sidekiq:start' 
    before 'deploy:restart', 'sidekiq:restart' 
    end 

上线的宝石文件的lib/Capistrano酒店/任务/ capistrano2.rb 26-31。

:sidekiq_default_hooks在块

Capistrano::Configuration.instance.load do 

    _cset(:sidekiq_default_hooks) { true } 

它的上方设置所以它是由配置对于该特定环境中加载一个Capistrano的实例变量。

的sidekiq:quiet命令运行

run_as "if [ -d #{current_path} ] && [ -f #{pid_file} ] && kill -0 `cat #{pid_file}`> /dev/null 2>&1; then cd #{current_path} && #{fetch(:sidekiqctl_cmd)} quiet #{pid_file} ; else echo 'Sidekiq is not running'; fi" 

而且我通过使用默认Capistrano的2部署配置假设你的部署过程看起来像: cap deploy proc

所以 - 根据您可以确认它每次都会重新启动。如果您愿意,可以使用Capistrano 2手动更改部署过程,或者也可以更改:sidekiq_default_hooks变量并以这种方式定义您自己的Sidekiq过程。

相关问题