#ruby-on-rails #ruby-on-rails-3 #delayed-job
#ruby-on-rails #ruby-on-rails-3 #отложенное задание
Вопрос:
Я использую delayed_job 2.1.4 из collectiveidea, и, похоже, метод perform никогда не вызывается, даже если задания обработаны и удалены из очереди. Я что-то упускаю?
Я использую Rails 3.0.5 на Heroku
В контроллере:
Delayed::Job.enqueue FacebookJob.new
В классе Job:
class FacebookJob
def initialize
end
def perform
fb_auths = Authentication.where(:provider => 'facebook')
fb_auths.each do |auth|
checkins = FbGraph::User.new('me', :access_token => URI.encode(auth.token)).checkins
if checkins != nil
checkins.each do |checkin|
[...]
end
end
end
end
end
(весь код:https://gist.github.com/966509 )
Ответ №1:
Простой ответ: известно ли DelayedJob о классах аутентификации и FBGraph::User? В противном случае вы увидите именно то поведение, которое вы описали: элементы будут автоматически удалены из очереди.
- Смотрите эту запись в Вики отложенных заданий в Вики отложенных заданий.
- Попробуйте добавить «требовать аутентификации» и «требовать fb_graph» (или что-то еще) в свой файл facebook_job.rb.