0

我正在使用 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
4

1 回答 1

0

为此使用 rufus-scheduler 太过分了。

def set_schedule
  Thread.new do
    sleep 10
    self.change_to_done
  end
end

应该足够了。

但是,您在 Rails 之上运行的“服务器”是否对线程友好?如果没有,您最好将任务传递给 resque 或 sidekick 之类的东西。

于 2013-11-27T00:31:12.333 回答