2012-07-31 80 views
0

我正在编写一个扑克变体游戏,并且需要ruby或rails来运行一个大循环来保持游戏自动化。即:在Ruby或Rails中延迟函数调用

  • 每隔10秒检查一次,以确定游戏中有足够的玩家;
  • 当有时,处理卡片,然后倒计时~45秒,在这之后会发生摊牌;
  • 在我的扑克变体中,有3个连续的对决 - 因此每个摊牌都需要缓慢发生,以便玩家知道发生了什么事情:即5秒显示手部的第一部分并宣布该对决的赢家5秒第二次和5秒第三
  • 暂停从顶部手,几秒钟后
  • 启动循环再次

我有一个快速浏览一下的delayed_job和resque,但它们看起来相当复杂为了我想要做的事情。我还考虑过使用javascript/jquery循环来沿着循环推动服务器,但这看起来很不雅观,因为每个桌面上的潜在众多玩家都会试图推动循环,而不是服务器执行循环集中。

我错过了一个相当简单的功能,还是该深入研究delayed_job?

回答

0

你几乎需要某种形式的守护进程,但你不一定需要任何库。

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

+0

感谢您确认没有内置的功能,我可以依靠。我最终使用了rufus-scheduler,它似乎是我需要的最干净的一个。 – 2012-08-01 02:07:08