未初始化的常数延迟::作业

我已将delayed_job gem添加到我的gemfile并正确安装但是当我尝试运行以下行时:

Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc 

我收到错误’uninitialized constant Delayed :: Job’

有人可以解释我在这里需要做什么吗? 我已经尝试过预先运行’rake jobs:work’,但它也会返回’未初始化的常量Delayed :: Job’错误。 另外,我已经在文件(application.rb)中添加了“require’dundate_job’”而没有太多运气。

您是否按照README文件中的安装说明进行操作? https://github.com/collectiveidea/delayed_job

将其添加到您的gemfile:

 gem 'delayed_job_active_record' 

然后在控制台上运行它:

 $ rails generate delayed_job:active_record $ rake db:migrate 

您需要在数据库中创建延迟作业表(这假设您正在使用活动记录)。

对于Rails 3,您需要做的就是将它包含在gemfile中,运行上面的代码来创建表并迁移数据库,然后重启服务器然后去!

如果您已升级到delayed_job版本> = 3,则需要添加此项(假设您使用的是ActiveRecord):

 # Gemfile gem 'delayed_job_active_record' 

我在引擎中使用延迟作业(所以gem在.gemspec而不是Gemfile中指定)并且得到了相同的错误。 我发现我可以使用以下方法解决问题:

 require 'delayed_job_active_record' # fixes problem 

而不是

 require 'delayed_job' # doesn't 

以防万一,如果仍然无法回答,请查看以下链接

http://www.pipetodevnull.com/past/2010/4/14/uninitialized_constant_delayedjob/

编辑:替代方案,只需升级到最新版本 – 2.1

我在同一个问题上挣扎了一段时间。 我在delayed_job上关注ryan bates截屏并得到了相同的错误’未初始化的常量延迟::作业’。 在截屏video中,ryan创建了一个名为mailing_job.rb(位于lib文件夹下)的文件,其中包含delayed_job执行方法,允许您使用enqueue方法。 做了一些研究后,我发现rails 3没有自动将lib文件夹文件加载到你的应用程序中。(不完全确定)

试试这个
在您使用此控制器的控制器中:

 "Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc" 

尝试要求这样的文件。

 require 'mailing_job' class AssetsController < ApplicationController def some_method Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc end end 

版本更改可能性 :如果您通过非锁定捆绑包从2.1.x跳转到3.x版本的gem,则可能存在类似问题。