2014-10-27 39 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

相關問題