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

时间:2011-07-10 14:23:12

标签: ruby-on-rails ruby-on-rails-3 delayed-job

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

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

我收到错误'未初始化的常量延迟::作业'

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

6 个答案:

答案 0 :(得分:18)

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

# Gemfile
gem 'delayed_job_active_record'

答案 1 :(得分:13)

您是否按照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中,运行上面的代码来创建表并迁移数据库,然后重新启动服务器然后去!

答案 2 :(得分:10)

我在引擎中使用延迟作业(因此gem在.gemspec而不是Gemfile中指定)并且得到了相同的错误。我发现我可以通过使用:

解决问题
require 'delayed_job_active_record'  # fixes problem

而不是

require 'delayed_job'                # doesn't

答案 3 :(得分:2)

以防万一,如果仍未回复,请查看以下链接

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

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

答案 4 :(得分:1)

我在同一个问题上挣扎了一段时间。我在delayed_job上关注ryan bates截屏并得到了相同的错误'uninitialized constant Delayed :: Job'。在截屏视频中,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

答案 5 :(得分:0)

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