2

我正在尝试在 Ruby on Rails 中创建一个基于 Web 的游戏。我有一个名为“Game”的模型,它在数据库条目中有一个日期时间,对应于我希望服务器调用 Game 模型的 update_game 函数的时间。根据游戏的设置,这可能是每 30 秒到每 12 小时一次。

Ruby on Rails 似乎只在收到 HTTP 请求时才起作用。有没有一种巧妙的方法可以让我的游戏独立于 HTTP 请求定期更新?

4

4 回答 4

2

Rails 本身不这样做。cron 这样做。然而,Ruby 确实有一个名为“Whenever”的 gem,可以更轻松地声明和部署新的 cron 作业。

但是,如果您真的希望大量游戏能够每 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 回答