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)
여기에 무슨 일이 일어나는지 파악하는 데 도움이되는 다른 세부 정보가 있으면 알려 주시기 바랍니다. 건배!
실제로이 문제는 Apotomo 위젯 뷰를 처리하는 것과 관련이 있다고 생각합니다. – dznz
행운을 빌어 요? –
예, 프로세스가 Apotomo url_for_event 프로세스가 아닌 일반 레일스 양식을 사용하지 않도록 변경했으며 이제 작동합니다. 도와 주셔서 감사합니다! – dznz