まず、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 スレッドが消失するのを防止したりします)。