wheneverはcrontab管理ライブラリです。導入はすごく簡単ですし、RailsやCapistranoとの連携もスムーズで楽ちんです! 定期実行するような処理がある場合はぜひご検討ください!
(2016/01/10) Rails 4.2 x Ruby 2.3の動作確認。記事をリファクタリング
🗽 Gemのインストール
いつ戻おりGemfile
に以下を追加して、bundle install
を実行してください。
# Gemfile |
🐮 whenever設定ファイルschedule.rbを作成
次のコマンドを実行してconfig/schedule.rb
$ bundle exec wheneverize . |
🚜 wheneverのコマンドの解説
wheneverでは次の4つをスケジューリングできます。
command: bashコマンド実行 rake: rakeタスク実行 runner: Rails内のメソッド実行 script: scriptの実行
🐯 設定の具体例
# config/schedule.rb |
🤔 Corntabへの設定
crontabに設定する際のコマンドは次のとおり。
# wheneverの設定更新 |
詳しい設定方法はGitHubの公式ページへ。
🐰 Capistranoとの連携
Capistranoについての詳しい記事は、『Capistrano 3系でRails4.1のデプロイ』です。興味があればぜひご一読ください。
Capistrano/wheneverの基本的な連携
wheneverの特徴のひとつとして、Deployプロセスの自動化をしてくれるGem Capistranoと簡単に連携できる点があります。
設定方法は、まず以下をCapfile
に追記。
require 'whenever/capistrano' |
続いて、config/deploy.rb
に以下を追記。
set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" } |
あとはcap deploy
のたびにcrontabをアプデートしてくれます。
🐡 Capistrano/wheneverで環境ごとに設定を変更したい場合
次の記事を見ながら設定すればできる気がします^^
😀 参考リンク
capistrano+wheneverで簡単cron管理-logiclogic’s blog | logiclogic’s blog
🐠 変更来歴
(12/12/24 xx:xx) 新規作成
(13/01/07 18:35)「補足:別ファイルにローカルタスク用の設定を書く」を追加
(13/01/08 23:50)「補足:複数環境でwheneverを使いたい場合。..」を修正
(14/04/23 22:20) Rails 4.1対応、全面書き直し!
(14/07/10 20:15) 環境ごとにcronの設定を切り替える方法を追記
(14/11/02 15:25) Capistranoで環境ごとに処理を振り分ける方法がrvmのパスが変わってうまく動かなくなったので一度削除
(15/11/15 17:15) wheneverコマンドの記述を追加
(16/01/10 14:40) bundle execを追加。Rails 4.2 x Ruby 2.3.0動作確認