延迟函数调用ruby或rails

时间:2012-07-31 05:40:24

标签: ruby-on-rails-3

我正在编写一个扑克变种游戏,需要ruby或rails来运行一个大循环以保持游戏自动化。即:

  • 每10秒检查一次,以确保游戏中有足够的玩家;
  • 当有牌时,处理牌,然后倒计时~45秒,摊牌就会发生;
  • 在我的扑克变种中有3个连续的摊牌 - 因此每次摊牌需要缓慢发生,以便玩家知道发生了什么:即5秒显示手的第一部分并宣布该摊牌的赢家,5秒第二次和第五次
  • 手后暂停几秒钟
  • 再次从顶部开始循环

我已经快速查看了delayed_job和resque,但是对于我正在尝试做的事情,它们看起来相当复杂。我还考虑过使用javascript / jquery循环来推动服务器沿着循环,但这似乎是不优雅的,因为桌面上每个潜在的众多玩家都会寻求推动循环,而不是服务器这样做集中。

我错过了一个相当简单的功能,还是是时候深入了解delayed_job?

1 个答案:

答案 0 :(得分:0)

你几乎需要一些守护进程,但你不一定需要任何库。

您可以将代码编写为某个模块的方法,并使用rails runner调用它。该方法可以执行包含sleep <seconds>的循环来执行代码并等待。停止进程的简单方法是让它监视文件存在于/ tmp或其他内容,但您也可以执行诸如编写pid文件之类的操作,然后使用其pid终止该进程。