みなさん、こんにちは。
みなさんは普段PCでなんども実行するプログラムを、どうしていますか?
cronなどで定期実行の設定をして、自動でやってもらっている方も多いのでは無いでしょうか。
PC上のタスクはcronなどを使えばできますが、今回はRailsで定期的に実行したいタスクを設定する方法をご紹介していこうと思います。
今回ご紹介するのは、RubyのライブラリGemの「whenever」というものです。
この「whenever」というGemの使い所は、例をあげると「このデータ1時間おきにインポートしたいな」や「このバッチ1日おきに実行したいな」という時に便利なライブラリになります。
それでは早速、使い方をまとめていきたいと思います。
Railsで定期実行する手順【wheneverの使い方】
Gem「whenever」をインストール
まずは何よりも、インストールしないと始まりません。
今回はGemfileに追記して、「whenever」をインストールしていきます。
bundle installまでできればインストール成功です。
wheneverの設定ファイル作成
wheneverをインストールしたら次は、設定ファイルを作りましょう。
以下のコマンドを現在作成中のアプリのディレクトリ内で、実行してください
上のコマンドを実行すると、「config/schedule.rb
」というファイルが作成されているので、ここに定期実行したいタスク・バッチの設定を書き込んで反映させていきます。
定期実行させたいタスクは、「config/schedule.rb
」に上のように記入すると設定できます。
書式は複数あるので、好きなもの・分かりやすいものを選択しましょう。
ちなみに、実行環境はprodaction環境がデフォルト設定なので、developmentで実行したいなら上記コードのように明示的に指定する必要があります。
設定ファイルの反映
さて、設定ファイルが完成しました。
あとは設定ファイルを反映するだけで、定期実行してくれるはずです。
設定ファイルを反映・確認するコマンドは以下になります。
反映する時は「update」、無効化する時は「clear」なので分かりやすいと思います。
初めての設定でうまく設定できているか不安もしくは分からないという方は、echoコマンドなどで簡単な出力をして、「cron.log」ファイルを確認してみると安心です!
「whenever」コマンドで設定が反映されたのを確認でき、タスクが実行されれば万事OKです。お疲れ様でした!
まとめ
今回は「whenever」というGemを紹介してきました。
定期的に実行したいタスクは意外とあるもので、そのような時には大変重宝するGemだと思います。
またcapistranoを通して本番環境でも動作するので、実運用にも耐えられることも良ポイントです。
さらにシンプルで直感的に分かりやすいGemなので、学習コストも低くインストールしたらすぐに使えるという点が素晴らしいと思います。
一つ注意点としては、本番環境でも動作するという点に例外があって、Herokuで運用する際はサポートされていないです。
もしHerokuで定期実行したいタスクがあるのなら「Heroku Scheduler」を活用しましょう。
それでは。
コメントを残す