LoginSignup
1
0

More than 3 years have passed since last update.

capisranoでwheneverの設定を更新

Last updated at Posted at 2019-06-08

結論

Capfile に以下の設定を追加するのみでよかったです。
deploy.rb で設定を上書きするような記事もありましたが、
普通の使い方をするのであれば上書きしなくて ok な気がします。

# 以下を追加
require 'whenever/capistrano'
config/deploy.rb
# ここでは何も指定しない

実行されるコマンド

dryrun で実行確認したところ、コマンドは以下のように出ていました。
migration した後のタイミングで、 crontab の更新がくるようです。
application = fetch(:application)
environment = fetch(:rails_env)

00:00 deploy:migrating
      01 RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.6.3 /usr/local/rbenv/bin/rbenv exec bundle exec rake db:migrate
00:00 whenever:update_crontab
      01 RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.6.3 /usr/local/rbenv/bin/rbenv exec bundle exec whenever --update-crontab {application} --set environment={ENV} --roles=app,db

実装を確認

特殊なことをしたい時は、以下の値を set しておけば上書きできるようになっていましたが、余計なことはしなくてもやりたいことができたのでそのままにしました。

recipes.rb
# whenever-0.11.0/lib/whenever/capistrano/v2/recipes.rb

Whenever::CapistranoSupport.load_into(self)

_cset(:whenever_roles)        { :db }
_cset(:whenever_options)      { {:roles => fetch(:whenever_roles)} }
_cset(:whenever_command)      { "whenever" }
_cset(:whenever_identifier)   { fetch :application }
_cset(:whenever_environment)  { fetch :rails_env, fetch(:stage, "production") }
_cset(:whenever_variables)    { "environment=#{fetch :whenever_environment}" }
_cset(:whenever_update_flags) { "--update-crontab #{fetch :whenever_identifier} --set #{fetch :whenever_variables}" }
_cset(:whenever_clear_flags)  { "--clear-crontab #{fetch :whenever_identifier}" }
_cset(:whenever_path)         { fetch :latest_release }

( 省略 )
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0