2009-12-28 3 views
3

나는 rail5 환경으로 여객과 공유 된 host5.com에서 delayed_job (tobi와 collective_idea를 모두 사용)을 사용하고 있습니다. 나는 일을 할 수 있었다. 그러나 처음 실행 후 작업 클래스 소스 코드의 변경 사항은 플러그인에서 무시합니다. 변경 될 때마다 서버를 다시 시작했지만 (touch tmp/restart.txt) 여전히 무시합니다.delayed_job - 최신 코드를 수행하지 않습니까?

예 :

파일 : 나는 전화 간단한 컨트롤러에서 lib/xx_job.rb

class XxJob 
    def perform 
    Rails.logger.info "XX START" 

    TempTest.delete_all 

    i = 0 
    10.times { 
     i+=1 
     TempTest.create(:name => "XXX") 
     sleep(1) 
    } 

    Rails.logger.info "XX END" 
    end 
end 

:

Delayed::Job.enqueue(XxJob.new) 

결론 내가 수집 한 : 나는 xx_job을 변경하는 경우

  1. . rb에서 xx_job 1.rb - 컨트롤러에 오류
  2. 내가 클래스 XxJob1에 클래스 XxJob을 변경하는 경우 - 오류 컨트롤러
  3. 에 나는 모든 방법의 내용을 수행 삭제하는 경우 - 이전 코드 된 코드가 실행
  4. 새로운 .rb 파일을 나는 서버를 다시 시작했다 모든 변경 사이

을 실행 예전의 코드 - 나는 그 새 파일의 수행과 다시 작업을 실행에 뭔가를 변경하는 경우 완벽하게

  • 작동 - 그리고 클래스와이 클래스를 대기열에, 수행합니다. 여객 또는 다른 뭔가가 클래스 캐시를 저장하는 것 같습니다.

    어떻게이 캐시를 삭제할 수 있습니까? 어딘가에 서버에 저장되어 있습니까? (공유 호스팅에서 액세스 할 수 있기를 바랍니다)

    고마워!

  • +0

    이 답변을 본 적이 있으십니까? http://stackoverflow.com/questions/1609586/rails-delayedjob-want-to-load-newest-version-of-job-class –

    답변

    2

    결국 나는 몇 명의 작업자가 백그라운드에서 실행 중임을 알았습니다. 각각의 작업이 잡히고 자신의 캐시를 가졌습니다. 몇 초 동안 테이블의 이름을 바꾸기 위해 그들을 죽이는 법을 알지 못했습니다. 그 (것)들은 그들을 죽였다 :

    나는 그 때 작업자 시작으로 http://wiki.github.com/tobi/delayed_job/running-delayedworker-as-a-daemon를 사용하고, 그것은 중대하게 작동한다.

    2

    지연된 작업자를 데몬으로 실행하면 코드를 다시로드하기 위해 다시 시작해야합니다. 또한 각 작업자는 자체 레일 인스턴스를로드합니다.

    관련 문제