首先你需要初始化一个 rufus-scheduler 实例。这通常在 Rails 初始化程序中完成:
# config/initializers/scheduler.rb
require 'rufus-scheduler'
# Let's use the rufus-scheduler singleton
#
s = Rufus::Scheduler.singleton
# Stupid recurrent task...
#
s.every '1m' do
Rails.logger.info "hello, it's #{Time.now}"
end
然后,您的控制器可以使用 rufus-scheduler 实例,如下所示:
class ScheController < ApplicationController
def index
job_id =
Rufus::Scheduler.singleton.in '5s' do
Rails.logger.info "time flies, it's now #{Time.now}"
end
render :text => "scheduled job #{job_id}"
end
end
这适用于 Webrick 和 Thin,但需要对 Passenger 或 Unicorn 进行一些调整(防止多个调度程序和/或防止初始 rufus-scheduler 线程消失)。