【发布时间】:2013-09-11 10:34:37
【问题描述】:
我使用 Ruby 中的 Rufus-scheduler 从一个简单的控制器操作中调度作业。 稍后我想调用另一个操作,在其中我将取消计划直到那个时刻正在执行的作业。 当然,在启动和停止调度程序之间可能发生的许多会话期间,我需要保持对我的调度程序的引用。 一个明显的选择是某种单例类,它将保持对调度程序的引用。
这是一个好的方法吗?
如果是,这就是我的处理方式...
除了“controllers”、“models”、“views”等文件夹...我创建了文件夹“domain”,在其中创建了具有 Rufus::Scheduler 类属性的 AppConfig 单例类。
我的单例类如下所示:
require 'singleton'
require 'rufus/scheduler'
class AppConfig
include Singleton
attr_accessor :scheduler
def self.instance
@@instance ||= new
end
def initialize
@scheduler = Rufus::Scheduler.start_new
end
end
而我使用这个调度器的操作是这样的:
# ...
# someController
def start_actions
scheduler = AppConfig.instance.scheduler
scheduler.every('30s') do
SomeModel.some_method
end
end
def stop_actions
scheduler = AppConfig.instance.scheduler
scheduler.stop(:terminate => true)
end
我在这里遗漏了什么吗?这是一个好的方法吗?
【问题讨论】:
标签: ruby-on-rails ruby singleton rufus-scheduler