我正在配置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
答案 0 :(得分:1)
您可能需要
require 'postman'
位于SocialMediaPost文件的顶部。