リア充爆発日記

You don't even know what ria-ju really is.

capistrano3 + wheneverでハマったメモ

ハマった内容としては、deployしてもcronがupdateされないという現象。

結論からいうと、サーバのroleの設定ミスだった。

wheneverのcapistranoプラグインはデフォルトでdbロールのサーバに対してcrontabへのupdateを行うのだけれど、
対象のサーバがdbロールを持っていなかったので実行されていないというだけだった。これ、ログにもでないので気づきにくい。


で、cronを実行するサーバにはbatchロールを付与することにした。
さておき、wheneverのcapistrano周りで足した記述をまとめると
Capfile

~snip~
require 'whenever/capistrano'

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

deploy.rb

~snip~
set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }
set :whenever_roles,        ->{ :batch }
~snip~

deploy/staging.rb

~snip~
server 'ria10.example.com', user: 'ria10', roles: %w{web app batch} # batchを足した
~snip~

これだけ。
はぁ。2時間くらい使っちまった・・・。

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails