はじめに
この記事は、Ruby on rails 初心者が備忘録として作成したものです。なにか間違い等ありましたら、ご指摘よろしくお願いします。
Rakeタスクとは?
-
Rubyコードでタスクとして作成し、必要なときに実行することができる
=> Rake は Ruby のビルドツールで、タスク(作業)を自動化 -
この時に実行する処理内容がrakeタスク
=>Rakefile
に定義 -
Rake タスクの用途
=>データベースの初期化や更新
定期的なデータのクリーンアップや集計
バッチ処理の実行
テストの実行や自動化されたタスクの実行 等々…
要するに、定期的なメール送信、古いデータのクリーニング(例:x日以上経ったログデータや不要なキャッシュを削除する処理)、記事等の自動公開が可能に。
-
Rake と Whenever の連携
Rakeタスクは単体では手動でコマンドを実行する必要がありますが、Wheneverを使うと、任意のタイミングで自動で実行できるようになる。
Rakeタスクの作成
- /lib/tasks フォルダ配下に.rakeファイルを作成
namespace :名前空間 do
desc タスク説明
task タスク名 do
タスク本体
end
end
Wheneverの設定
-
gem 'whenever'
cronの設定を、rubyの簡単な文法で扱えるようにしたライブラリ
cron = 定期的にコマンドを実行するためにメモリ場で常に命令を待機しているプロセス
詳細は以下の記事を参照ください
https://qiita.com/mmaumtjgj/items/19e866f31541abb6c614
-config/schedule.rb
を開いて、以下を追加
every <頻度> do
rake "<タスク名>"
end
例
job_type :rake, "cd :path && :environment_variable=:environment bundle exec rake :task --silent :output"
every 1.hour do
rake "publish:change_status"
end
- <頻度>には
1.day
1.week
1.minute
1.month
1.year
などの単位を指定できる
Cronジョブの更新
- 設定が完了したら、以下のコマンドを実行してCronジョブを更新
whenever --update-crontab
- Cronジョブが正しく設定されているか確認するために、以下のコマンドを実行
crontab -l
参考