Попытка заставить delayed_job работать с монгоидным бэкэндом. Созданное задание не запускается, по-видимому, потому, что оно отправляется в коллекцию db.entries
, а не в коллекцию db.delayed_backend_mongoid_jobs
.
Учитывая следующий код в классе Entry:
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_backend_mongoid_jobs будет создана новая запись delayed_job. Вместо этого я вижу следующий журнал базы данных:
MONGODB health_blog_development['entries'].insert([
{"content"=>"foo", "_id"=>BSON::ObjectId('4ee95ed3b643988551000044') ... },
{"priority"=>0, "attempts"=>0, "handler"=>"--- !ruby/struct:Delayed::PerformableMethod ... }])
, как будто он думает, что должен отправить задание в коллекцию записей.
Некоторые детали, которые могут иметь отношение:
- Запись была разделена на подклассы. Я пробовал код в Entry и его подклассе, TextEntry.
- Функция запускает find, когда handle_asynchronously не используется.
- Запись не является встроенным классом, но имеет несколько ссылочных отношений.
- Я установил config.mongoid.preload_models = true
- Я подтвердил, что delayed_job работает должным образом, когда я использую его с новой моделью в том же проекте.
Используемые драгоценные камни:
- монгоид (2.2.4)
- рельсы (3.0.9)
- delayed_job (2.1.4)
- delayed_job_mongoid (1.0.4)
Пожалуйста, дайте мне знать, если есть какие-либо другие детали, которые могут помочь выяснить, что здесь происходит. Ура!