【问题标题】:Rails 4.1 with ActiveJob gem - uninitialized constant ActiveJob带有 ActiveJob gem 的 Rails 4.1 - 未初始化的常量 ActiveJob
【发布时间】:2014-12-22 04:08:52
【问题描述】:

我已关注 EngineYard 的 getting started with active job 文章。文章称:

如果您想在默认情况下启用 Active Job,则需要 Rails 4.2.0beta1 或更高版本(在旧版本的 Rails 中,您可以将其作为 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)`

编辑 - 修正错字“gem active job”

更新 1

按照下面 solydest 的建议,将 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)

【问题讨论】:

  • 宝石名称中不能有空格。这是gem 'activejob'
  • 对不起,这是我的问题中的一个错字,实际上我的拼写正确,正如您在我的 gemfile 中列出的那样。我已经更新了问题。
  • 好的,bundle show activejob 的输出是什么?
  • /Users/marklar/.rvm/gems/ruby-2.1.2@rails4.1_app/gems/activejob-0

标签: ruby-on-rails rails-activejob


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助。如果我添加require 'active_job',那么我不再得到`未初始化的常量`,而是收到错误undefined method perform_later'`。我将更新问题以反映这一点。
【解决方案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/

【讨论】:

  • 很棒的文章。我认为值得一提的是,该文章使用require 'active_job' 类似于 solydest 的答案。我已经提到了这一点,以防文章链接失效。
【解决方案3】:

如果您想在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多