我已经关注了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'
添加到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 :(得分: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。