Не удалось загрузить задание: неинициализированная константа с отложенным заданием и Rails 3 - PullRequest
2 голосов
/ 29 марта 2011

Я пытаюсь использовать Delayed Job в своем приложении на Rails 3, но продолжаю сталкиваться с проблемой.Задания продолжают сбой с ошибкой: Job failed to load: uninitialized constant CrawlJob.

Я нашел пару других SO потоков и следовал советам там безрезультатно.Вот соответствующий код.

Application.rb

require File.expand_path('../boot', __FILE__)

require 'rails/all'

...

module Decurate
  class Application < Rails::Application

...

    config.autoload_paths += %W(#{config.root}/lib)
    config.autoload_paths += Dir["#{config.root}/lib/**/"]

...

  end
end

/ lib / crawl_job.rb

class CrawlJob < Struct.new(:merchant_id,:ec2,:s3)
  def perform

...

  end
end

/ lib / tasks / cron.rake

  merchants = Store.all.collect{ |store| store[:merchant_id] }
  merchants.each do |merchant_id|
    queue.push merchant_id
  end
  merchants.each do |merchant_id|
    Delayed::Job.enqueue CrawlJob.new(merchant_id,@ec2,@s3)
  end

1 Ответ

3 голосов
/ 29 марта 2011

Извините всех, кажется, что я просто забыл перезапустить свои рабочие процессы, поскольку я возился с autoload_paths. Для справки, вышеуказанная договоренность должна работать. Просто не забудьте запустить нового работника с rake jobs:work!

...