Rails — сделать MailChimp Hominid Gem фоновой задачей

#ruby-on-rails #delayed-job #mailchimp

#ruby-on-rails #отложенное задание #mailchimp

Вопрос:

Я пытаюсь вызвать свой Hominid в MailChimp API, однако без особого успеха. Мой вызов выглядит так

 h.list_subscribe(:user_list_id, params[:email], {'FNAME' => '', 'LNAME' => ''}, 'html', true, true, true, false)
  

где h — объект класса Homind::API. У этого объекта нет метода ‘delay’, предоставляемого delayed_job gem . У него даже нет стандартных методов, таких как «класс» или «методы». Когда я создаю пользовательское задание, оно не добавляется в очередь заданий.

Очевидно, что установка для метода значения ‘handle_asynchronously’ приводит к

 can't convert nil into String
  

в

 lib/delayed/yaml_ext.rb:16:in `value='
  

Я предполагаю, что Delayed_Job не может сериализовать очень урезанный собственный объект Hominid ::API. Предложения о том, как это сделать, приветствуются. Спасибо!

Ответ №1:

Ах, ответ был там с самого начала.

Когда создается пользовательское задание, его необходимо загрузить из инициализатора, чтобы оно было доступно, когда delayed_job выполняет задание. Простой,

 require 'my_custom_job_class'
  

подойдет любой из инициализаторов.

Вы также можете найти дополнительную информацию в delayed_job wiki