Rescue.enqueue on after_commit 回调 returns 未初始化常量错误

Rescue.enqueue on after_commit callback returns uninitialized constant error

我正在配置 Resque,我想在我的 SocialMediaPost 模型的 after_commit 回调中加入一个作业。当我尝试保存我的模型实例时,出现 uninitialized constant SocialMediaPost::Postman 错误。这是我第一次从事后台工作,所以我不确定我错过了什么。我一直在关注关于此的 RailsCast 以及 Resque 存储库的自述文件。

这是我的模型SocialMediaPost:

class SocialMediaPost < ActiveRecord::Base
    belongs_to :company
    belongs_to :employer
    validates :post, length: {in: 0..140}, if: Proc.new { |t| t.twitter }
    validates :post, length: {in: 0..256}, if: Proc.new { |t| t.linkedin }
    after_commit :enqueue

    private

    def enqueue
        if self.scheduled_time
            options = {
                id: self.id,
                services: JSON.parse(self.services),
                posts: JSON.parse(self.posts),
                attachment_url: self.attachment_url,
                media_url: self.media_url,
                time: self.scheduled_time
            }
            Resque.enqueu(Postman, options)
        else
            post_tweet if self.twitter && self.attachment_url.blank?
            post_tweet_with_media if self.twitter && self.attachment_url.present?
            post_linkedin_status if self.linkedin
        end
    end
end

这是我的工人 Postman (app/workers/postman.rb):

class Postman
    @queue = :social_media_posts

    def self.perform(options)
        post = SocialMediaPost.find(options.id)
        post.post_tweet if options[:services][:twitter] && options[:attachment_url].blank?
        post.post_tweet_with_media if options[:services][:twitter] && options[:attachment_url].present?
        post.post_linkedin_status if options[:services][:linkedin]
    end
end

这是我的 resque.rake 文件:

require 'resque/tasks'

namespace :resque do
    puts "Loading Rails environment for Resque"
    task :setup => :environment do
        ActiveRecord::Base.descendants.each { |klass|  klass.columns }
    end
end

您可能需要

require 'postman'

在您的 SocialMediaPost 文件的顶部。