cronとwheneverで定期実行を行う話

プログラミングを本格的にスタートして3ヶ月目に入りましたさかもとです。

今回はcronとwheneverについて!という話をアウトプットしようと思います。

 

cronって?

cronとはlinuxのOS上にあり、定期実行させたい場合にブラウザで動作しなくても裏で自動で走ってくれる(デーモンプロセス)機能のことをいいます。

 

wheneverって?

wheneverとは「1分おきにデータを更新したい!」とか「1日おきに更新したい!」などの定期実行の設定を簡単にかけるgemです。

 

この2つを組み合わせてwheneverで設定したものをcronで動かす。という流れを作ります。

 

実装手順

 

①gemのインストール

```

gem 'whenever' , require: false

```

bundleを忘れずに

 

②設定ファイルの作成

```

bundle exec wheneverize .

```

config/schedule.rbというファイルが作成される。

 

③wheneverファイル(schedule.rb)に設定を記述していこう

初めに大切なことはRailsと同期させるために環境変数をセットすることです。

https://i.gyazo.com/6547ff5d8d7a765c11f7d24165fe6272.png

こうすることにより実際に実行されたかをログを頼りに確認することができます。

 

④実際に実行されるタスクを記載

ここに関しては今回具体的な動作を書くことは致しません。

しかし書き方には注意してください。

例えば10分おきに実行されるプログラムが作りたいとしましょう。

その場合の記述方法は

```

every 10.minutes do

    : 

end

```

このように記載しましょう。こうすることで10分おきに稼働します。 

 

ここまでがwheneverの設定方法です。今度はこれを実行させるためにcronに反映させていこうと思います。

 

⑤設定内容にエラーなどがないかの確認

```

bundle exec whenever

```

 

⑥設定した内容をcronに反映

```

bundle exec whenever --update-crontab

```

 

これで反映は完了です。

あとは実際にデータを作成し更新され、ログが残るかを確認すれば終了です。

 

参考記事

Railsでwheneverを使ってcronを設定する - Qiita

【Railsで定期実行】wheneverの使い方紹介 | shin>>media