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
最新のアップデートを購読する
関連記事