私のアプリケーションでcron
を毎週メールを送信しようとしていますが、Windowsでは動作しないと思います。窓にレールアプリケーションにcronのようなものがありますか?
誰でもWindows上で動作するcron
ソリューションと同等のものを知っていますか?
私のアプリケーションでcron
を毎週メールを送信しようとしていますが、Windowsでは動作しないと思います。窓にレールアプリケーションにcronのようなものがありますか?
誰でもWindows上で動作するcron
ソリューションと同等のものを知っていますか?
WindowsのUnixのcron
は、「タスクスケジューラ」です。定期的にタスクを設定することができます。
あなたは純粋にRubyのソリューションをしたい場合に見て:
Resqueと拡張子Resque-schedulerの宝石をご覧ください。 resqueスケジューラプロセスをbundle exec rake resque:scheduler
で実行し、少なくとも1つのワーカープロセスをQUEUE=* bundle exec rake resque:work
で実行する必要があります。 これらのサービスをWindowsサービスとしてバックグラウンドで実行する場合は、srvany.exe
(this SO question)の説明に従って行うことができます。
上記の説明では、キャッシュやActionCableなどの他のRailsコンポーネントを簡単にサポートするためにRailsコミュニティで非常に人気のあるキーバリューストアであるRedisをインストールすることを前提としています。多くのマルチプロセスユースケースで使用されます。
Resqueは、バックグラウンドで非同期に実行できるジョブを定義できるRedisの上にあるキューシステムです。 QUEUE=* bundle exec rake resque:work
を実行すると、ワーカープロセスが常に実行され、キューがポーリングされます。ジョブがエンキューされると、使用可能なワーカーがそのジョブをキューからポップし、そのキューで作業を開始します。このアーキテクチャーは非常にスケーラビリティがあります。希望する場合は、複数のワーカーがキューを聴くことができます。
ジョブを定義するには、次の操作を行います。
class MyWeeklyEmailSenderJob
def self.perform
# Your code to send weekly emails
end
end
あなたはどこからでもキュー自分自身にこのジョブをキューに入れることができますが(アクションへの応答としてコントローラから例えば)、あなたのケースにしたいです1週間に1回自動的にキューに入れられます。これがResqueスケジューラの目的です。 app/config/resque_schedule.yml
などのファイルを構成して、どの時間間隔にエンキューするジョブを定義できるかを指定できます。たとえば:
send_weekly_emails:
cron: 0 8 * * Mon
class: MyWeeklyEmailSenderJob
queue: email_sender_queue
description: "Send weekly emails"
は、スケジューリングプロセスは、これはbundle exec rake resque:scheduler
と連携するために実行しなければならないことを忘れないでください。
おかげでみんな、実際に私はルーファススケジューラの宝石を試してみましたが、それは私のために働いた、私はそれがWindows上で最良かつ簡単に解決
だと思う、あなたが使用したい[タスクスケジューラ](https://msdn.microsoft 。com/ja-us/library/windows/desktop/aa383614.aspx)を参照してください。それが積極的に開発されているようには見えませんが、おそらく[win32-taskscheduler](https://rubygems.org/gems/win32-taskscheduler/)の宝石はあなたの助けになります。 – IInspectable
win32-taskschedulerの使い方は? –