Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【Rails】定期的に処理を実行させたい場合には??

f:id:mTakata:20200608010951j:plain

こんにちは。当ページにアクセスしてくださり、ありがとうございます。

 

この記事は、プログラミング言語「Ruby」のフレームワーク「Rails」についての記事になります。

 

【目次】

問題

Railsで定期的に実行したい処理は、lib/tasks以下のディレクトリに、rakeタスクを作成して処理を記述することが多いです。

 

次のコードは、全てのユーザーに対して、ユーザーが入店したかどうかを管理する"enterd_flag"というカラムをfalseにするrakeタスクです。

 

rakeタスクの使い方を確認した上で、下記のrakeタスクを、ターミナルから実行するためには、どのようなコマンドを実行すれば良いでしょうか。

 

【lib/tasks/user_checker.rb 】

```Rails(Ruby)
namespace :user do
 desc "ユーザーの入店情報をリセットする"

task reset_entered_flag: :environment do
User.update_all(entered_flag: false)
end
end ``` 

回答

```ターミナル上で実行する
$ rake user:reset_entered_flag ``` 

解説

rake [namespeceの名前]:[taskの名前]

上記のように記述して実行します。


例えば、毎日・毎週特定の曜日・3日おきなど、特定の周期で実行したいrakeタスクがあるとします。

こういうタスクは、自動で実行できれば良いですね。

その場合は、wheneverというgemを組み合わせて利用できます。

 

興味のある方は、是非下記リンクを参考にしてみてください。

morizyun.github.io

以上となります、参考になれば幸いです。

最後まで読んで頂き、ありがとうございました。