2014-09-12 5 views
2

У меня немного сложность с ActiveJob в Rails 4.2 и Resque.Как настроить ActiveJob для использования Resque?

Я установил redis, и я добавил resque и resque-scheduler в свой Gemfile.

Я создал тестовое задание - это просто сгенерированный файл

rails g job test 

, но я получаю ошибки о ActiveJob не определены

NameError: uninitialized constant ActiveJob 

или метод отсутствует, когда я переключаю адаптер, как это

config.active_job.queue_adapter = :resque 

Я получаю эту ошибку

/usr/local/lib/ruby/gems/2.1.0/gems/railties-4.2.0.beta1/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `active_job' for #<Rails::Application::Configuration:0x007f97ba98a5b8> (NoMethodError) 

Я даже посмотрел исходный код, но понятия не имею. Это просто вызов супер.

https://github.com/rails/rails/blob/master/railties/lib/rails/railtie/configuration.rb#L95

Что мне не хватает? Почему адаптер очереди не работает? Кто-нибудь знает, как это исправить?

ответ

5

Получается, что я выбрал рамки, которые я использовал.

# config/application.rb 
require "active_model/railtie" 
require "active_record/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "action_view/railtie" 
require "sprockets/railtie" 

Способ его исправления состоит в том, чтобы добавить среду Active Job в файл application.rb.

require "active_job/railtie" 

Или загрузить все Rails

require 'rails/all' 

Это, кажется, работает.

+1

В какой файл я должен добавить 'require 'rails/all" 'to? Я попытался добавить его в файл resque.rake, но я все равно получаю «неинициализированный постоянный ActiveJob». У меня нет установленных рельсов 4.2 и я пытаюсь использовать ActiveJob в качестве драгоценного камня, поэтому, возможно, это моя проблема. – Marklar

+0

config/application.rb - файл, который необходимо изменить. Я обновил ответ, чтобы включить это. Пожалуйста, рассмотрите возможность голосования. –

+0

@Marklar Я просто понял, что вы еще не на рельсах 4.2, так что это проблема. Если вы находитесь на 4.2, следуйте приведенным выше инструкциям. Я не использовал его как драгоценный камень, поэтому я не могу вам помочь. –

1

Добавьте им Gemfile с драгоценным камнем 'resque' и gem 'resque-scheduler' и установите пакет. Мы также должны создать Resque конфигурационный файл:

#config/initializers/resque.rb 

Resque.redis = Redis.new(:host => "localhost", :port => 6379) 

Мы также требуют задачи рейк планировщик Resque и Resque, так что мы можем начать наши рабочие и планировщик с граблями: # Lib/задачи/Resque .rake

require 'resque/tasks' 
require 'resque/scheduler/tasks' 

namespace :resque do 
    task :setup do 
    require 'resque' 
    require 'resque-scheduler' 
    end 
end 

Теперь мы можем начать рабочий с QUEUE=* rake environment resque:work. Если все работает правильно, мы должны увидеть его в консоли Resque. Запустите resque-web и посетите http://0.0.0.0:5678/overview.

Все, что нам действительно нужно, это настроить его для использования адаптера Resque.

#config/initializers/active_job.rb 

ActiveJob::Base.queue_adapter = :resque 

Теперь добавление рабочих мест и их присутствие должны работать должным образом. Также попробуйте обновить жерл рельсов, если вы видите undefined ActiveJob.

Смежные вопросы