after_commit回调的Rescue.enqueue返回未初始化的常量错误

时间:2015-10-14 20:50:42

标签: ruby-on-rails resque

我正在配置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

1 个答案:

答案 0 :(得分:1)

您可能需要

require 'postman'

位于SocialMediaPost文件的顶部。