2011-12-15 2 views
2

mongoid 백엔드에서 delayed_job을 사용하려고합니다. 생성 된 작업은 db.delayed_backend_mongoid_jobs 컬렉션이 아닌 db.entries 컬렉션으로 푸시되고 있기 때문에 실행되지 않습니다. 클래스 항목에 다음 코드를 감안할 때delayed_job의 handle_asynchronously 메소드가 delayed_backend_mongoid_jobs가 아닌 모델의 컬렉션으로 푸시되는 이유는 무엇입니까?

:

after_create :create_dj 
def create_dj 
    Rails.logger.info "ENTRY CREATED at #{created_at}" 
end 
handle_asynchronously :create_dj, run_at: Proc.new { 30.seconds.from_now } 

내가 새로운 delayed_job 항목을 기대할 수는 delayed_backend_mongoid_jobs 컬렉션을 만들 수있다. 대신 다음 db 로그를 볼 수 있습니다.

MONGODB health_blog_development['entries'].insert([ 
    {"content"=>"foo", "_id"=>BSON::ObjectId('4ee95ed3b643988551000044') ... }, 
    {"priority"=>0, "attempts"=>0, "handler"=>"--- !ruby/struct:Delayed::PerformableMethod ... }]) 

마치 작업을 항목 컬렉션으로 푸시해야한다고 생각하는 것처럼 말입니다. 관련이있을 수 있음을

일부 세부 정보 :

  • 항목이 서브 클래스되었습니다. 나는 Entry와 그의 하위 클래스 인 TextEntry에서 코드를 시도했다.
  • handle_asynchronously를 사용하지 않을 때 find 함수가 실행됩니다.
  • Entry는 포함 된 클래스는 아니지만 참조 된 관계가 여러 개 있습니다.
  • config.mongoid.preload_models = true를 설정했습니다.
  • 동일한 프로젝트에서 새 모델을 사용할 때 delayed_job이 예상대로 작동하는 것으로 확인되었습니다.

보석 사용 :

  • mongoid (2.2.4)
  • 레일 (3.0.9)
  • delayed_job (2.1.4)
  • delayed_job_mongoid (1.0.4)

여기에 무슨 일이 일어나는지 파악하는 데 도움이되는 다른 세부 정보가 있으면 알려 주시기 바랍니다. 건배!

+0

실제로이 문제는 Apotomo 위젯 뷰를 처리하는 것과 관련이 있다고 생각합니다. – dznz

+0

행운을 빌어 요? –

+0

예, 프로세스가 Apotomo url_for_event 프로세스가 아닌 일반 레일스 양식을 사용하지 않도록 변경했으며 이제 작동합니다. 도와 주셔서 감사합니다! – dznz

답변

0

이것은 delayed_job과 Apotomo 위젯 프레임 워크의 조합으로 인한 이상한 행동입니다. Apotomo url_for_event 프로세스가 아닌 일반 Rails 양식을 사용하도록 프로세스를 변경하면 문제가 해결됩니다.

0

delayed_job 컬렉션의 항목은이 클래스를 만드는 클래스를 참조하며이 경우 엔트리 클래스라고 생각합니다.

실제로 얻는 오류는 무엇입니까?

+0

오류가 없습니다. 'db.delayed_backend_mongoid_jobs' 콜렉션이 아닌'db.entries' 콜렉션으로 작업을 푸시했기 때문에 단지 작업을 수행하지 못합니다. 나는 그것을 명확히하기 위해 질문을 편집 할 것이다. – dznz

관련 문제