2014-10-27 59 views
2

我遵循EngineYard的getting started with active job文章。文章指出:带ActiveJob的Rails 4.1 gem - 未初始化的常量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)

我想在我的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

继以下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) 
+0

您的宝石名称中不能有空格。这是'gem'activejob''。 – Archonic 2014-10-27 01:18:02

+0

对不起,这是我的问题中的拼写错误,我实际上有正确的拼写,如你在我的gemfile中列出。我已经更新了这个问题。 – Marklar 2014-10-27 02:22:41

+0

好的,'bundle show activejob'的输出是什么? – Archonic 2014-10-27 16:22:55

回答

2

我发现ActiveJob for rails 4.1的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/

+1

梦幻般的文章。我认为值得一提的是这篇文章使用'require'active_job''类似于solydest的答案。我已经提到过,以防文章链接死亡。 – Marklar 2014-11-25 05:07:37

7

我加require 'active_job'到config仅低于所有其他需要/ application.rb中指令,并为我解决了这个问题。

+0

感谢您的帮助。如果我添加'require'active_job'',那么我不再获得'未初始化常量',而是收到错误'未定义方法perform_later'。我会更新这个问题来反映这一点。 – Marklar 2014-10-28 21:46:28

相关问题