отложенное задание ставит в очередь и удаляет задание в базе данных, но не выполняет код (локально) - PullRequest
0 голосов
/ 28 июля 2011

Я использую следующий код для выполнения метода с отложенным заданием:

class MyClass
   def send_a_text
      t = TwilioCommunicator.new
      t.send_sms("+15177416150","sent at #{Time.now}")
   end
   handle_asynchronously :send_a_text
end

t = MyClass.new
t.send_a_text

Без отложенного задания это отправляет мне текстовое сообщение 100% времени.С отложенным заданием я вижу, что это задание ставится в очередь в базе данных, а затем удаляется из очереди, но код не запускается.Я тестирую локально, и вот фрагмент из моего файла development.log:

AREL (0.5ms)  INSERT INTO "delayed_jobs" ("priority", "attempts", "handler", "last_error", "run_at", "locked_at", "failed_at", "locked_by", "created_at", "updated_at") VALUES (0, 0, '--- !ruby/struct:Delayed::PerformableMethod 
object: !ruby/object:MyClass {}

method_name: :send_a_text_without_delay
args: []

', NULL, '2011-07-28 05:24:47.700969', NULL, NULL, NULL, '2011-07-28 05:24:47.701070', '2011-07-28 05:24:47.701070')
  AREL (2.9ms)  UPDATE "delayed_jobs" SET locked_at = '2011-07-28 05:24:51.191404', locked_by = 'delayed_job host:Stephen-B-Silverbergs-MacBook.local pid:3714' WHERE (id = 13 and (locked_at is null or locked_at < '2011-07-28 01:24:51.191404') and (run_at <= '2011-07-28 05:24:51.191404'))
  AREL (0.3ms)  DELETE FROM "delayed_jobs" WHERE ("delayed_jobs"."id" = 13)

Одна вещь, которую я заметил, это то, что method_name это send_a_text_without_delay вместо send_a_text, но это единственное странное, что я вижу.Есть идеи?

1 Ответ

0 голосов
/ 18 августа 2011

Где находится объект MyClass в вашем проекте Rails?Если это не в app/model, то вам нужно сослаться на класс в инициализаторе для работы Delayed_Job.Эта проблема молча завершается в delayed_job.

См .: Rails Delayed Job & Library Class

...