2016-02-28 71 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過程。

相關問題