最近では、プロジェクトはバックグラウンドで定期的に何かをチェックまたは送信するデーモンを作成する必要があります。
通常、同様のタスクは、whevenever、daemon_controller、daemon_generatorなどのパッケージを使用して解決されます。 すべてがシンプルで明確に見えましたが、毎回庭を囲い、同じことを書くことにうんざりしていました。 1時間ごとにUser.notify_allを実行するだけです。
loop_danceの提示-レール環境でマネージデーモンを迅速に展開するためのgem。
条件
- 最小冗長コード。 何を開始する必要があるのか、そしてどの頻度で。
- コードは鉄道環境で実行されます。
- デーモンは、プロジェクトのデプロイ時に自動的に開始/再起動する必要があります。
- rake-tasksを介して、またはアプリケーションから直接デーモンを制御する機能(管理パネルでステータスを確認できるのは便利です)
踊る
パッケージをGemfileに挿入し、忘れずにバンドルを更新します
gem "loop_dance"
タスクと指定された頻度でファイルlib / loop_dance.rbを作成します。
例:3時間ごとにすべてのユーザーに通知します。 60秒ごとにレポートを確認します。
class Dancer1 < LoopDance::Dancer every 3.hours do User.notify_all end every 60.seconds do Report.checks end end
以上です。
レールサーバーを次に再起動したときに自動的に起動する最初のダンサーを作成し、独立したデーモンとしてシステムにハングアップし、指定した頻度でタスクを実行します。
手動で管理することもできます:
rake loop_dance:start_all rake loop_dance:stop_all rake loop_dance:status rake loop_dance:dancer1:start rake loop_dance:dancer1:stop rake loop_dance:dancer1:status
そして、アプリケーション自体から次のことができます。
Dancer1.start unless Dancer1.running?
プロジェクトのアドレス:
github.com/dapi/loop_dance関連リンク:
ruby-toolbox.com/categories/daemon_management.htmlruby-toolbox.com/categories/daemonizing.htmlruby-toolbox.com/categories/scheduling.html