見出し画像

【💻】cronジョブとwheneverの関係性がいまいち掴めてない(わかんなすぎるメモ)

定期的にコマンド自動実行してくれるcronジョブについて、railsでの使い方がいまいちわかってない。理解深めるためのメモ。


下の記事を見てみた。

概要まとめてみると…
・cronは定期的にコマンド実行するためにずっとメモリ上で待機してるプロセス
・crontabに記載しておけばcronに決まった時間に処理をさせることができる。
・crontabはruby向けの書き方ができない。⇨rubyでもcronとかcrontabへの書き込み簡単にできるようにあるのがwheneverライブラリ
・wheneverインストールで自動生成されるschedule.rbに書き込めば、自動でcrontabに変換記載してくれる。
・つまりrailsでcron動かすために記載する必要があるのはschedule.rb

上の解釈が合ってるかAIに確認してみた

あなたの解釈の確認
cron:
正解: cron はLinuxやUnix系のシステムで、指定した時間に定期的にコマンドを実行するためのデーモンプロセスです。crontab に記載した内容に基づいて、決まった時間に処理を行います。

crontab:
正解: crontab は、cron に実行させたいコマンドやスクリプトを設定するためのファイルです。このファイルは特定の形式で書かれ、基本的にはシェルコマンドを記述します。Rubyの特別な構文は使えません。

wheneverライブラリ:
正解: whenever ライブラリは、Rubyで書かれたコードを使って簡単に cron ジョブを管理するためのツールです。これにより、Rubyの構文を使ってスケジュールを設定できるようになります。

schedule.rb:
正解: whenever をインストールすると自動生成される schedule.rb ファイルにスケジュールを記述します。このファイルの内容は、whenever を使って crontab に変換され、実際に cron に登録されます。

Railsでのcron動作:
正解: Rails アプリケーションで cron ジョブを動かすためには、主に schedule.rb に必要な設定を記載することが重要です。これによって、簡単に cron ジョブを管理できます。

ちなみにwheneverではjob_typeっていう4種類の処理をデフォルトで行えるらしい。

command: bashコマンド実行
rake: rakeタスク実行
runner: Rails内のメソッド実行
script: scriptの実行

書き方としては以下みたいな感じ。これはjob_typeのrakeを使用してる

every 1.hours do
  rake "state:change"
end