capistrano3-unicornを使う

capistrano3-unicornとは、capistranoでデプロイしたときにunicornのstart/restartをしてくれるgemです。
https://github.com/tablexi/capistrano3-unicorn

Install

Gemfileに以下を追記してbundle installします。

1
2
3
group :development do
gem 'capistrano3-unicorn'
end

Capfileに以下を追記します。

1
require 'capistrano3/unicorn'

config/deploy.rbに以下を追記します。

1
2
3
4
5
6
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
task :restart do
invoke 'unicorn:restart'
end
end

これで設定完了です。
cap deployすればunicorn restartが実行されるようになります。

注意点ポイント

設定していて少しわかり辛かった点があります。

unicorn.rbがデフォルトではCURRENT_PATH/config/unicorn/RAILS_ENV.rbに設定されています。
sinatraなどのrails以外のアプリケーションの場合は、RAILS_ENVがセットされていないため、CURRENT_PATH/config/unicorn/.rbのようになってしまいます。
ですので、明示的に設定が必要です。
しかし、設定方法についてドキュメントに明記されてないので少し戸惑いました。

設定はソースを参考にしました。

https://github.com/tablexi/capistrano3-unicorn/blob/master/lib/capistrano3/tasks/unicorn.rake#L4

unicorn_config_pathの設定

以下のようにlambdaを使って設定します。
config/unicorn.rbをunicorn_config_pathとして設定しています。
config/deploy.rb

1
set :unicorn_config_path, -> { File.join(current_path, "config", "unicorn.rb") }