Использование DelayedJob и RestClient в Rails 4.2.5 Jruby 2.2.2

#ruby-on-rails #ruby #queue #delayed-job

#ruby-on-rails #ruby #очередь #отложенное задание

Вопрос:

Я использую delayed_jobs и rest_client в своем приложении, я создал папку заданий и класс заданий jobs / test_job.rb.

 class TestJob < Struct.new(:name)
 def perform
  RestClient.get "http://name"
 end 
end
  

RestClient и DelayedJob работают нормально, но когда клиент (http://name ) не работает, delayed_job выдает ошибку SocketError и не повторяет ее.

В моем контроллере у меня есть это.

 Delayed::Job.enqueue TestJob.new(my_other_rails_app), :queue => "my_test"
  

Не запрашивается ли delayed_job при возникновении ошибки?

Ответ №1:

Я решаю проблему, отложенное задание работает, если ошибка произошла в другой базе данных, так что проблема была в моей базе данных, я использую openedge, и ошибка заключается в том, что символьная строка слишком длинная для поля last_error, поэтому мне нужно изменить gem, чтобы ошибка не сохранялась долго, или изменить длину символа поля. отложенное задание-4-1-2 libdelayedbackendbase.rb Из:

 def error=(error)
    @error = error
    self.last_error = "#{error.message}n#{error.backtrace.join("n")}" if respond_to?(:last_error=)
end
  

Для:

 def error=(error)
 @error = error
 self.last_error = "#{error.message}" if respond_to?(:last_error=)
end