2016-04-13 2 views
1

私のアプリケーションでcronを毎週メールを送信しようとしていますが、Windowsでは動作しないと思います。窓にレールアプリケーションにcronのようなものがありますか?

誰でもWindows上で動作するcronソリューションと同等のものを知っていますか?

+1

だと思う、あなたが使用したい[タスクスケジューラ](https://msdn.microsoft 。com/ja-us/library/windows/desktop/aa383614.aspx)を参照してください。それが積極的に開発されているようには見えませんが、おそらく[win32-taskscheduler](https://rubygems.org/gems/win32-taskscheduler/)の宝石はあなたの助けになります。 – IInspectable

+0

win32-taskschedulerの使い方は? –

答えて

1

WindowsのUnixのcronは、「タスクスケジューラ」です。定期的にタスクを設定することができます。

enter image description here

純粋にRubyのソリューション

あなたは純粋にRubyのソリューションをしたい場合に見て:

  • rufus-scheduler - それは、Windowsのcron宝石です。
  • crono - これはin-Railsのcronスケジューラなので、どこでも動作するはずです。
  • Web services - 特定の期間に特定のURLにリクエストするオンラインサービスがたくさんあります。これは基本的に貧しい人のクルージョブです。
1

Resqueと拡張子Resque-schedulerの宝石をご覧ください。 resqueスケジューラプロセスをbundle exec rake resque:schedulerで実行し、少なくとも1つのワーカープロセスをQUEUE=* bundle exec rake resque:workで実行する必要があります。 これらのサービスをWindowsサービスとしてバックグラウンドで実行する場合は、srvany.exethis 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と連携するために実行しなければならないことを忘れないでください。

0

おかげでみんな、実際に私はルーファススケジューラの宝石を試してみましたが、それは私のために働いた、私はそれがWindows上で最良かつ簡単に解決

関連する問題