Railsアプリケーションを作ってみる。whenever – ジョブ登録編

みなさまご無沙汰しております。
またもや体調を崩してしまった小川です。
ネクストは全員体調を崩しております。
マスクは必須です。

ネクスト風邪ひいた。さよなら。


さて、5回目になりましたRailsブログです。
少し前に簡単な会員機能つきのリーダーを開発し終えました。
まだまだ機能として足りないものが多いので、みなさまに公開できる代物になるまで温存です。

これまでの記事は以下をご参照下さい。

Railsアプリケーションを作ってみる。初歩編
Railsアプリケーションを作ってみる。作業の流れ編
Railsアプリケーションを作ってみる。devise – ユーザー認証機能編
Railsアプリケーションを作ってみる。feedzirra – RSS取得編

前回までにfeedzirraで記事を取得し、モデルに追加するところまでやりましたので、今回は記事取得モデルをcrontabに登録して定期的にバッチ処理を行う方法を書きます。
Railsにはwheneverという便利なcron管理ライブラリがありますので、wheneverを使います。

まずお約束のGemfileに以下の行を追記します。
gem 'whenever'

次に以下のコマンドを実行。
bundle install
bundle exec wheneverize

するとconfigディレクトリにschedule.rbというバッチ処理スケジュールを記述するためのファイルが作られます。
実際に使用しているconfig/schedule.rbが以下です。

set:output, {:error =>'log/whenever.log', :standard=>'log/cron.log'}
every 30.minutes do
  runner "Tasks::GetFeedTask.execute"
end

コンソール等で確認するために以下のコマンドを実行します。
bundle exec wheneverize

エラーが出なかったら、cronへの登録を行います。
bundle exec whenever --update-crontab
#成功したら[write] crontab file updatedと出力

これで30分毎にGetFeedTask.executeが実行されます。
以上、wheneverライブラリを使用したcronのジョブ管理でした。