2011-06-24 8 views
0

Ruby on Railsでリマインダー型関数を作成するにはどうすればよいですか?私が欲しいのは、基本的にデータベース機能を定期的に(1分ごとに)呼び出す無限のスレッドです。あたかも宝石の大部分(神、いつでも、など)がcronの仕事に頼っているかのように見えます。Ruby on Railsでリマインダー関数を作成

これを実行するには、堅牢でスケーラビリティの高いcronジョブが最適ですか?サーバーのバックグラウンドでスレッドを実行する際の欠点は何ですか?

Node.jsのようなものは、このようなものに行くより良い方法ですか? Javascriptには、私が必要とするものと思われる組み込みのsetInterval関数があります。散在した質問を申し訳ありません、オプションを見てください。

(特にRubyで)

+0

どのようなリマインダーの?リマインダーの間隔は何ですか?ページをリフレッシュしないで1〜60分、または多くのページを訪問して何日もかかりますか? – ayckoster

+1

私はRORデベロッパーではありませんが、node.jsを使用してもこれは問題ありません。 – Alfred

+0

私はちょうど1分ごとにイベントを発生させることができるクロック、すなわち何かが必要です。このイベントはUIの更新ではなく、照合レコードのDBを確認する必要のあるバックグラウンドプロセスです。一致する各レコードに電子メールが送信されます – hoitomt

答えて

0

長時間実行プロセスは、多くの場合、メモリのかなりを消費し、モニタリングを必要とする、障害点になるおかげで、などそれだけに多くの意味になりますので、クロンは、かなり信頼性がありますcrontabにエントリを設定し、それを定期的なプロセスにします。

つまり、これをサポートするRubyバックグラウンドジョブがあります。例としてhttps://github.com/bvandenbos/resque-schedulerを見てください。

3

リマインダーのバックグラウンドジョブは必要ありません(操作可能なデータセットが大きくない限り)。 Rufus :: Schedulerを使用して、ある時間に/ at/everyで特定のモデルアクションを実行できます。

Gemfile

gem 'rufus-scheduler', :require => "rufus/scheduler" 
設定/初期化子/ reminder_sheduler.rbで

scheduler = Rufus::Scheduler.start_new 

scheduler.cron("0 5 * * *") do 
    Model.send_reminder_email 
end 
関連する問題