Ошибка сериализации Rails для асинхронного геокодирования с помощью ahoy gem с использованием mongoid

У меня есть приложение Rails 5, в котором запущена база данных postgresql для данных приложения и MongoDB (mongoid) для аналитики. , сгенерированный фантастическим гемом ahoy.

Все работает отлично, пока я не переключаюсь на асинхронное геокодирование в config/initializers/ahoy.rb, что приводит к ошибке ниже:

ActiveJob::SerializationError (Unsupported argument type: Visit):

Приложение использует delayed_job для фоновой обработки.

У меня есть обходной путь для этой проблемы, или это вызвано несовместимостью между mongoid и delayed_job?


person benrs44    schedule 17.11.2017    source источник


Ответы (1)


Попробуйте добавить миксин GlobalId в свою модель.

class Visit
  include GlobalID::Identification
end
person Andrew Kane    schedule 18.11.2017
comment
Спасибо, @AndrewKane. Это помогает при создании задания, но теперь я получаю новую ошибку, когда delayed_job пытается выполнить геокодирование: ActiveJob::DeserializationError: Error while trying to deserialize arguments: Document(s) not found for class Visit with id(s) #<BSON::Binary:0x000000090f6f00> Я пытался понять, что может быть причиной этого, и нашел это при обмене стеками: что вы думаете о передаче идентификатора в метод выполнения? - person benrs44; 19.11.2017