Ruby on Rails でタスクをスケジュールする方法

Ruby on Rails でタスクをスケジュールする

「来週危機が起こるはずがない。もう予定がいっぱいです。」ヘンリー・キッシンジャーのこの生意気な引用は、スケジュールを立てることの重要性を説明しています。人生でもテクノロジーでも、スケジュールは重要です。構成よりも規約を優先する Ruby on Rails に関しては、スケジューラーが必須です。ジョブのスケジューリングは、「さまざまなタスク間でリソースをコミットする決定プロセス」として定義できます。これは基本的に、シーケンスの一部として、または RSS フィードを取得するメンテナンス操作の実行など、事前に定義された時間内にルーチン タスクを実行できるようにする機能です。バックグラウンドで実行されるこれらのスケジュールされたジョブは、「ワーカー」によって実行されます。それでは、Rails 環境でタスクをスケジュールする最良の方法は何でしょうか?通常、開発者はアプリケーション固有の cron ジョブを使用してタスクを実行できますが、cron ジョブはスケジュールを設定するためのものであり、実際に実行するものではありません。単一サーバーでもうまく機能しますが、複数のサーバーに拡張したい場合は、あまりうまく機能しません。また、デバッグも難しく、時間がかかります。では、依存関係や過剰な構文を使用せずに、スケジューリングが適切に機能することを確認するにはどうすればよいでしょうか。 「いつでも」があなたの助けになります! 「whenever」 gem が Ruby で cron ジョブを作成するのにどのように役立つかを確認してください。

Whenever 宝石とは何ですか?

これは、明確な構文でトウモロコシ ジョブを作成およびデプロイするために使用されます。

インストール方法は?

gem 'Whenever', :require => false
インストール後、「wheneverize」と入力する必要があります。これにより、config フォルダー内に、schedule.rb ファイルが自動的に作成されます。 schedule.rb ファイル内で、時間、日付、月などに基づいて関数をスケジュールできます。例:
1 日ごと、:at => '10:00 am' do rake “sow:events_reminder_mail”, :environment => :開発終了
アクションをスケジュールする前に、lib フォルダー内にタスク フォルダーを 1 つ作成する必要があります。タスク フォルダー内に rake ファイルを作成できます。アクションのスケジュールに使用する必要があるのは、その rake ファイル名のみです。
rake “sow:events_reminder_mail”, —–> タスク名を含む rake ファイル名 :environment => :development ——–> 環境を指定する必要があります
rake ファイル内で条件を指定し、メールの送信に User Mailier を使用できます。その User Mailier は、時間、日付、月などのスケジュールに基づいてメールを送信します。例:()
desc 「イベントが非アクティブ」タスク :events_inactive => :environment do @events = Event.where(:end_date=>Date.today-1.days) @events.each do |event| event.update_attributes(:published_status=>false,:inactive_dat e=>Date.today) end end
参考:https://github.com/javan/whenever

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese