Ruby on rails 需要Cron作业Rails的指导吗

Ruby on rails 需要Cron作业Rails的指导吗,ruby-on-rails,cron,Ruby On Rails,Cron,我有一个rails应用程序。rails应用程序有很多“游戏”,每个游戏都使用一个API,我可以用它来查看游戏是否结束。我想为每个游戏设置一个cron作业,每10分钟检查一次游戏是否结束,如果结束,则停止该游戏的cron作业 “鲁弗斯调度器”似乎是一个合法的容易宝石。我只是想找一些关于如何做的指导。游戏创建时,我是否将其存储在控制器中 scheduler = Rufus::Scheduler.new scheduler.every '10m' do #look for game o

我有一个rails应用程序。rails应用程序有很多“游戏”,每个游戏都使用一个API,我可以用它来查看游戏是否结束。我想为每个游戏设置一个cron作业,每10分钟检查一次游戏是否结束,如果结束,则停止该游戏的cron作业

“鲁弗斯调度器”似乎是一个合法的容易宝石。我只是想找一些关于如何做的指导。游戏创建时,我是否将其存储在控制器中

  scheduler = Rufus::Scheduler.new
  scheduler.every '10m' do
    #look for game over, until game over
  end

如果用户不再激活控制器,cron作业是否会继续运行?最好的方法是什么?

我从来没有使用过
rufus调度程序
,但我一直使用
where
,我相信
where
在Rails社区中使用得更多

无论如何,要在rufus scheduler中实现这一点,我认为您只需在“每10m”块中添加rails代码。假设您在游戏中创建了一个类方法,例如:

class Game
  def self.clean_ended_games
    #logic to clean/stop/remove cron for games that have ended
  end
end
然后使用rufus,您可以在
config/initializers/scheduler.rb中执行以下操作:

require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new
scheduler.every '10m' do
  Game.clean_ended_games
end
使用where将非常相似。在
config/schedule.rb
文件中,您将输入:

every 10.minutes do
  runner "Game.clean_ended_games"
end

为什么需要每个游戏的cron条目?这让我觉得很可疑,好像有更好的解决方案吗?如果你能想到一个im开放给它,但该网站允许两个用户在在线视频游戏中互相“挑战”。我有一个api,允许我检查每一场比赛是否结束。想点更好的吗?你也是对的。谢谢你,菲利普。只是不明白你想说什么。谢谢你的回答!非常感谢您的帮助。你是说我会有两个cron作业在运行?一个是检查游戏是否仍在运行(因为这是需要的,对吗?),另一个是检查所有游戏,并从已结束的游戏中删除cron作业?不,我不太清楚您到底想做什么,以帮助确定cron作业应该做什么或需要多少。我只是举了一个例子,在rufus和Anwhere中设置一个cron。经过再三考虑,我认为您应该有一个cron作业(独立于任何控制器之外安排),用于运行和停止/清理任何已结束的游戏。我认为您不需要多个cron作业。