2014-10-27 4 views
2

Я следовал за статьей getting started with active job Engine Engine. В статье указывается:Rails 4.1 с драгоценным камнем ActiveJob - неинициализированная константа ActiveJob

You'll need Rails 4.2.0beta1 or greater if you want to Active Job available by default (in older versions of Rails, you can require it as a gem)

Я пытаюсь использовать ActiveJob в проекте Rails 4.1. Я добавил ActiveJob в свой gemfile gem 'activejob'. Согласно статье, у меня есть:

#config/initializers/active_job.rb 
ActiveJob::Base.queue_adapter = :resque 

Однако, когда я бег rails server я получаю следующее сообщение об ошибке:

config/initializers/active_job.rb:1:in «: неинициализированная константа ActiveJob (NameError)`

EDIT - Fixed опечатка "камень активная работа"

UPDATE 1

Следующее предложение Solydest, добавив require 'active_job' в application.rb, позволяет мне больше не получить ошибку uninitialized constant ActiveJob, но вместо этого я получаю сообщение об ошибке undefined method perform_later', когда пытаюсь позвонить мне. Я следую edge rails guide и епдиеий свою работу с кодом аналогичен:

MyJob.perform_later(record) 

начало моего класса работы:

class MyJob < ActiveJob::Base 
    queue_as :images 
    def perform(id) 
+0

У вас не может быть пробелов в именах ваших драгоценных камней. Это 'gem 'activejob''. – Archonic

+0

Извините, это была опечатка в моем вопросе, у меня на самом деле есть правильное написание, как вы указали в моем gemfile. Я обновил вопрос. – Marklar

+0

Хорошо, каков вывод 'bundle show activejob'? – Archonic

ответ

2

Я обнаружил, что версия ActiveJob для рельсов 4.1 равна 0, которая отличается от версии в Rails 4.2.

Если вы используете v0 из ActiveJob, синтаксис должен быть:

MyJob.enqueue(record) 

или

MyJob.enqueue(record, options) 

Вы найдете много интересного о ActiveJob с Rails 4.1 в этой статье : http://kinopyo.com/blog/use-activejob-in-rails-4-1/

+1

Фантастическая статья.Я думаю, стоит упомянуть, что в статье используется 'require 'active_job'', подобный ответу солидаста. Я упомянул об этом только в случае смерти ссылки на статью. – Marklar

7

Я добавил require 'active_job' в конфиг/application.rb чуть ниже все остальные требуют директив, и это решило проблему для меня.

+0

Спасибо за помощь. Если я добавлю 'require 'active_job'', то я больше не получаю' uninitialized constant', а вместо этого получаю ошибку 'undefined method' perform_later''. Я уточню вопрос, чтобы отразить это. – Marklar

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