我正在使用state_machine gem和rufus调度器gem。状态机运行良好。然而,Rufus调度器却不是。我构建这个程序只是为了习惯rufus gem。在:accepted转换为:both后10秒,它应该转换为:only_eemployer。但是,由于某些原因,rufus调度程序无法工作。转换为:both有效,但不会转换为:only_eemployer。我该如何解决这个问题?谢谢
class Schedule < ActiveRecord::Base
require 'rufus-scheduler'
scheduler = Rufus::Scheduler.new
def set_schedule
scheduler.in '10' do #documentation says this should be 10 seconds
self.change_to_done
end
end
state_machine :accepted, :initial => :none do
after_transition :any => :both, :do => :set_schedule
event :change_to_done do
transition :both => :only_employer
end
end
end
使用rufus调度程序是过分的。
def set_schedule
Thread.new do
sleep 10
self.change_to_done
end
end
应该足够了。
但是,在线程之上运行Rails的"服务器"是友好的吗?如果没有,你最好把任务交给resque或sidekick之类的人。