Resque worker无法识别Rails Mongoid模型

时间:2011-06-22 09:58:04

标签: ruby-on-rails ruby mongoid redis resque

我在我的应用程序中使用resque来延迟工作,我无法发送电子邮件和短信以异步方式批量处理用户数。并且数据存储在mongodb中,mongoid是ODM连接rails&蒙戈。

我的mongoid模型看起来像这样

class Item
  include Mongoid::Document
  include Geo::LocationHelper 

  field :name, :type => String
  field :desc, :type => String

  #resque queue name
  @queue = :item_notification

  #resque perform method
  def self.perform(item_id)
     @item = Item.find(item_id)

  end

end

我可以在resque中添加作业,我已经使用resque-web进行了验证。每当我开始一个resque-worker

QUEUE=item_notification rake resque:work

我得到了未初始化的常量项,因为我使用resque作为rails gem并在rails root中启动rake,我相信我的mongoid模型应该被加载。

经过挖掘后,我发现我们可以通过

明确要求rake加载环境
  QUEUE=item_notification rake environment resque:work

但现在我也得到了相同的错误未初始化的常量项

有人可以帮助我吗?

和我的

1 个答案:

答案 0 :(得分:0)

实际上,它在开发环境中存在问题。将此行添加到resque.rake任务文件

之后
# load the Rails app all the time
namespace :resque do
  puts "Loading Rails environment for Resque"
  task :setup => :environment
  ActiveRecord::Base.send(:descendants).each { |klass|  klass.columns }
end

一切正常

代码取自GitHub-Resque-Wiki