Rails 4.1 с драгоценным камнем ActiveJob - неинициализированная константа ActiveJob

Я следил за начало работы с активной работой статья EngineYard. В статье говорится:

Вам понадобится Rails 4.2.0beta1 или выше, если вы хотите, чтобы Active Job был доступен по умолчанию (в более старых версиях Rails вы можете потребовать его как гем)

Я пытаюсь использовать 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 — исправлена ​​опечатка "Gem active job"

ОБНОВЛЕНИЕ 1

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

MyJob.perform_later(record)

Начало моего рабочего класса:

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

person Marklar    schedule 27.10.2014    source источник
comment
В именах драгоценных камней не должно быть пробелов. Это gem 'activejob'.   -  person Archonic    schedule 27.10.2014
comment
Извините, это была опечатка в моем вопросе, на самом деле у меня правильное написание, как вы указали в моем gemfile. Я обновил вопрос.   -  person Marklar    schedule 27.10.2014
comment
Хорошо, что выводит bundle show activejob?   -  person Archonic    schedule 27.10.2014
comment
/Users/marklar/.rvm/gems/[email protected]_app/gems/activejob-0   -  person Marklar    schedule 27.10.2014


Ответы (3)


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

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

MyJob.enqueue(record)

or

MyJob.enqueue(record, options)

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

person Chambeur    schedule 23.11.2014
comment
Фантастическая статья. Я думаю, стоит упомянуть, что в статье используется require 'active_job', аналогичный ответу solydest. Я упомянул об этом на случай, если ссылка на статью умрет. - person Marklar; 25.11.2014

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

person solydest    schedule 28.10.2014
comment
Спасибо за вашу помощь. Если я добавлю require 'active_job', то я больше не получаю `неинициализированная константа`, а вместо этого получаю сообщение об ошибке undefined method perform_later'`. Я обновлю вопрос, чтобы отразить это. - person Marklar; 29.10.2014

Используйте этот гем, если хотите использовать Active Job on Rails 4.0 или 4.1:

https://github.com/ankane/activejob_backport

Но эта жемчужина не привлекла Action Mailer, вам нужно придерживаться deliver, см. https://github.com/ankane/activejob_backport/issues/1.

person Juanito Fatas    schedule 03.01.2015