【发布时间】:2013-11-26 22:20:48
【问题描述】:
我正在使用 state_machine gem 和 rufus-scheduler gem。状态机工作正常。然而,Rufus-scheduler 不是。我正在构建这个程序只是为了习惯 rufus gem。 :accepted 转换为 :both 10 秒后,它应该转换为 :only_employer。但是,由于某种原因,rufus-scheduler 无法正常工作。转换到 :both 有效,但它不会转换到 :only_employer。我该如何解决?谢谢。
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
【问题讨论】:
-
添加 scheduler.join 作为 set_schedule 方法中的最后一条语句。顺便说一句,我认为您不应该以这种方式使用 rufus-scheduler
-
谢谢,添加了,但是没有用。我查看了文档,但不太清楚“scheduler.join”应该做什么。你介意解释一下吗?
-
'scheduler.join' 使当前线程加入调度线程。这不是你想要的。 'scheduler.join' 用于独立脚本,而不是通过 Rails 或 Sinatra 运行的代码。
标签: ruby-on-rails ruby scheduled-tasks state-machine rufus-scheduler