Ruby on rails 使用ruby on rails定时服务器事件

Ruby on rails 使用ruby on rails定时服务器事件,ruby-on-rails,ruby,daemon,background-process,Ruby On Rails,Ruby,Daemon,Background Process,我正在尝试用RubyonRails创建一个基于web的游戏。我有一个名为“Game”的模型,它在数据库条目中有一个datetime,对应于我希望服务器调用游戏模型的update_Game函数的时间。根据游戏的设置,这可能是每30秒到每12小时 RubyonRails似乎只有在收到HTTP请求时才起作用;有没有一种巧妙的方法可以让我的游戏独立于HTTP请求定期更新?查看后台处理选项,可能还有cron。Rails本身不这样做;克朗做到了这一点。然而,Ruby必须简化新cron作业的声明和部署 但是,

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


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

查看后台处理选项,可能还有cron。

Rails本身不这样做;克朗做到了这一点。然而,Ruby必须简化新cron作业的声明和部署


但是,如果您真的希望每30秒可靠地更新大量游戏,那么如果更新游戏需要花费大量时间,您可能需要采取不同的方法。也许一旦游戏被访问,游戏就可以根据需要多次运行更新(例如,如果3分钟过去了,间隔为30秒,则在请求时运行6次更新)。不过,对于您的设置来说,这可能是一个很好的选项,也可能不是一个很好的选项,因此,请确定哪种方法更适合您的目的。

我喜欢在Rails中工作的gem“rufus scheduler”,尽管我不确定您是否可以通过编程方式向其添加更多任务

我会调查这件事的。当游戏开始时,您可以为第一次更新创建一个延迟的任务,之后的每次运行都可以以正确的间隔添加一个新任务,直到完成为止


不过我会做很多测试;)-您不想让作业从您身边溜走。

无论何时访问游戏,更新的困难在于游戏将更新子对象和孙子对象。我必须在游戏的每一个子代中添加类似的代码,如果我添加一个孙子,似乎很容易引入bug,但忘记在访问游戏时添加before_过滤器来更新游戏。所以它不是一个控制器吗?那么我想cron肯定是更好的解决方案。Where是一个很好的工具:)如果你担心忘记一个“before_filter”,那么为什么不创建一个继承自ActionController的类,包含它所需的所有设置和方法,然后让你的所有控制器继承自该类?