delayed_job - NameError - 未初始化的常量

时间:2013-02-17 19:52:31

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

我有这个自定义作业,位于/lib/jobs/MessageNotificationJob.rb

class MessageNotificationJob < Struct.new(:user_id, :message_id)  

  def perform

        @user = User.find(user_id)
        @message = Message.find(message_id)
    if !message.reciever_open
        MessagesMailer.message_notification(@user, @message ).deliver

    end

  end
end

我是通过MessagesController

的方法调用的
Delayed::Job.enqueue(MessageNotificationJob.new(@user.id, @msg.id))

application.rb我有

config.autoload_paths += Dir["#{config.root}/lib/**/"]      

但是我收到了错误

 NameError - uninitialized constant MessagesController::MessageNotificationJob:

我该如何解决这个问题?我尝试了几种变体,将其作为最新的变体来解决类似的问题。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我没有使用过最新的DelayedJob,但看起来很糟糕,因为延迟的作业在运行时没有加载MessageNotificationJob类。请尝试以下方法:

# file: config/initializers/custom.rb
require 'message_notification_job'

另见this wiki entry - 我认为较新版本的DJ改进了错误信息(而不是默默地失败),但根本原因是相同的。