Ruby on Railsを持つ時限サーバイベント
-
21-09-2019 - |
質問
私はRuby on Railsをでウェブベースのゲームを作成しようとしています。私はゲームのモデルのupdate_game関数を呼び出すためにサーバーを希望する時間に対応するデータベースエントリの日時を持っている「ゲーム」という名前のモデルを、持っています。ゲームの設定に応じて、これは12時間ごとに30秒ごとである可能性があります。
それはHTTPリクエストを受信したときにRuby on Railsがのみ動作するようです。 HTTPリクエストの定期的に独立した上で、更新に私のゲームを取得するためのスリック方法はありますか?
解決
私は delayed_jobに見てねこのため。ときにゲームを開始するには、最初の更新のためのdelayed_jobを作成することができ、そしてそれが行われるまでそれ以降のすべての実行が正しい間隔で新しいジョブを追加することができます。
私はかかわらず、テストの多くを行うと思います;。) - あなたは仕事があなたから離れて取得できるようにしたくない
他のヒント
は、それ自体がこれを行いませんレール。 cronがこれを行います。 Rubyは、しかし、には、新しいcronジョブを簡単に宣言し、展開を作るためにするたびに名前の宝石を持っていません。
あなたは本当にゲームの大規模な量が確実に30秒ごとに更新することを期待しようとしている場合は、しかし、あなたはこのゲームの更新は時間の任意のかなりの量を取る場合は、別のアプローチを取ることができます。ゲームがアクセスされたおそらくたら、ゲームは(3分が経過したとの間隔は30秒です例えばあれば、要求後、6つのアップデートを実行する)必要に応じて何度でも更新を実行することができます。図は、そのうちの方法は、あなたの目的のために、より実行可能であるので、これはあるいは、しかし、あなたのセットアップのための良い選択肢であってもなくてもよい。
おそらくcronのバックグラウンド処理オプションにして見ます。
私、私はわからないんだけど、あなたがプログラム的に複数のタスクを追加することができますが、Railsの内で動作宝石「ルーファス・スケジューラ」のような。