3

我已经按照EngineYard的积极工作入门文章进行了操作。文章指出:

如果您想要默认可用的 Active Job,您将需要 Rails 4.2.0beta1 或更高版本(在旧版本的 Rails 中,您可以将其作为 gem 来使用)

我正在尝试在我的 Rails 4.1 项目中使用 ActiveJob。我将 ActiveJob 添加到我的 gemfilegem 'activejob'中。根据文章,我有:

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

但是,当我运行时,出现rails server以下错误:

config/initializers/active_job.rb:1:in': 未初始化的常量 ActiveJob (NameError)`

编辑- 修正了拼写错误“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)
4

3 回答 3

9

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

于 2014-10-28T15:23:02.110 回答
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/

于 2014-11-23T16:49:52.157 回答
0

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

https://github.com/ankane/activejob_backport

但是这个 gem 并没有把 Action Mailer 拉进去,你需要坚持deliver,见https://github.com/ankane/activejob_backport/issues/1

于 2015-01-03T17:13:16.580 回答