2

Ruby on Rails で Web ベースのゲームを作成しようとしています。「ゲーム」という名前のモデルがあります。このモデルは、サーバーがゲーム モデルの update_game 関数を呼び出す時間に対応する日時をデータベース エントリに持っています。ゲームの設定に応じて、これは 30 秒ごとから 12 時間ごとになります。

Ruby on Rails は、HTTP リクエストを受信したときにのみ機能するようです。HTTP リクエストとは関係なく、定期的にゲームを更新する巧妙な方法はありますか?

4

4 に答える 4

2

Rails自体はこれを行いません。cronはこれを行います。ただし、Rubyには、新しいcronジョブの宣言とデプロイを容易にするWheneverという名前のgemがあります。

ただし、実際に大量のゲームが30秒ごとに確実に更新されることを期待している場合、ゲームの更新にかなりの時間がかかる場合は、別のアプローチをとることができます。おそらく、ゲームにアクセスすると、ゲームは必要な回数だけ更新を実行できます(たとえば、3分が経過し、間隔が30秒の場合、要求されたら6回の更新を実行します)。ただし、これはセットアップに適したオプションである場合とそうでない場合があります。そのため、目的に適した方法を見つけてください。

于 2009-12-25T01:57:50.713 に答える
2

これについては、 delayed_jobを調べます。ゲームの開始時に、最初の更新用にdelayed_jobを作成でき、その後の実行ごとに、完了するまで正しい間隔で新しいジョブを追加できます.

でも、私はたくさんのテストをしたいと思います;) - あなたは仕事を逃したくありません.

于 2010-02-11T23:29:55.337 に答える
1

バックグラウンド処理オプションと、場合によってはcronを調べます。

于 2009-12-25T01:19:00.000 に答える
0

Rails内で機能するgem'rufus-scheduler'が好きですが、プログラムでさらにタスクを追加できるかどうかはわかりません。

于 2010-01-19T14:23:39.113 に答える