带有ActiveJob gem的Rails 4.1 - 未初始化的常量ActiveJob

时间:2014-10-27 01:04:20

标签: ruby-on-rails rails-activejob

我已经关注了EngineYard的getting started with active job文章。文章指出:

  

如果您希望默认情况下可以使用活动作业,则需要Rails 4.2.0beta1或更高版本(在旧版本的Rails中,您可以将其作为宝石使用)

我正在尝试在我的Rails 4.1项目中使用ActiveJob。我将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)`

编辑 - 修正拼写错误"宝石活动工作"

更新1

根据以下最明确的建议,将require 'active_job'添加到a​​pplication.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)

3 个答案:

答案 0 :(得分:8)

我在所有其他require指令的下方添加了require 'active_job'到config / application.rb,这解决了我的问题。

答案 1 :(得分:2)

我发现用于rails 4.1的ActiveJob的gem版本是0,这与Rails 4.2中的版本不同。

如果您正在使用ActiveJob的v0,则语法应为:

MyJob.enqueue(record)

MyJob.enqueue(record, options)

在本文中,您将发现很多有关ActiveJob和Rails 4.1的有趣内容: http://kinopyo.com/blog/use-activejob-in-rails-4-1/

答案 2 :(得分:0)

如果要在Rails 4.0或4.1上使用Active Job,请使用此gem:

https://github.com/ankane/activejob_backport

但是这个宝石没有拉动Action Mailer,你需要坚持deliver,见https://github.com/ankane/activejob_backport/issues/1