0

저는 state_machine gem과 rufus-scheduler gem을 사용하고 있습니다. 상태 머신이 완벽하게 작동합니다. 그러나 Rufus-scheduler는 그렇지 않습니다. 루퍼 스 보석에 익숙해지기 위해서이 프로그램을 만들고 있습니다. 10 초 후 : 허용됨으로 전환 : 둘 다, 다음으로 전환해야합니다 : only_employer. 그러나 rufus-scheduler가 작동하지 않습니다. 전환 : 둘 다 작동하지만 그 후에는 only_employer로 전환되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까? 감사.rufus-scheduler 보석이 레일에서 작동하지 않습니다.

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 
+0

set_schedule 메소드에서 마지막 명령문으로 scheduler.join을 추가하십시오. BTW 난 이런 식으로 rufus - 스케줄러를 사용하지 말아야한다고 생각합니다 – Aguardientico

+0

고마워, 추가했지만 작동하지 않았다. 나는 문서를 보았지만 'scheduler.join'이 무엇을해야하는지 알 수 없다. 설명해 주시겠습니까? – Philip7899

+0

'scheduler.join'은 현재 스레드를 스케줄러 스레드에 결합시킵니다. 당신이 원하는 것이 아닙니다. 'scheduler.join'은 독립 실행 형 스크립트에서 사용되며 Rails 또는 Sinatra를 통해 실행되는 코드에서는 사용되지 않습니다. – jmettraux

답변

0

이 경우 rufus-scheduler를 사용하면 잔인합니다.

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

으로 충분해야합니다.

그렇다면 레일스를 스레드 위주로 실행하는 "서버"입니까? 그렇지 않다면, 당신은 resque 또는 조롱과 같은 무언가에 작업을 전달하는 것이 좋습니다.

+0

고마워,하지만 내가 말했듯이,이게 내가 좀 더 복잡한 것으로 들어가기 전에 내가 루퍼스를 배우려고하는 것일 뿐이야. 나는 또한 구조를 시도하고 너무 복잡하다는 것을 알았다. 또한 일정한 시간 내에 구조 작업을하는 방법을 알 수 없었습니다. 나는 단지 주어진 사건 이후의 일이 아니라 백그라운드에서 일자리를 되풀이하는 법을 알아낼 수 있었다. – Philip7899

+0

이것을 읽으면 도움을 얻을 수 있습니다. http://www.chiark.greenend.org.uk/~sgtatham/bugs.html 설정에 대한 세부 정보를 제공하지 않습니다 (Ruby, Rails, rufus-scheduler 버전, ...). 당신은 당신이 레일 (씬, 여객, 유니콘, ...) 위에 무엇을 달고 있는지를 말하지 않고있다. Resque-scheduler가 관심을 가질 수있다. https://github.com/resque/resque-scheduler – jmettraux

+0

나는 무엇이든 꼭대기에 레일을 달고 있지 않으며 나는 구조로 몇 시간을 보냈다. 나는 rufus의 최신 버전을 사용하고있다. (나는 github에 어떤 버전이 있는지 알지 못한다. 그것은 보석 파일에 'rufus-scheduler'gem을 넣는 것으로부터 얻은 버전이다. 나는 배경 작업에 아주 익숙하다. 그래서 내가 누락 된 몇 가지 기본적인 지식이 있다는 좋은 기회가 있지만 몇 가지 레일 캐스트를 통해 잠시 인터넷을 검색했지만 아무것도 찾을 수 없습니다. – Philip7899

관련 문제