Спасатель не признает модель Rails Mongoid - PullRequest
2 голосов
/ 22 июня 2011

Я использую resque в своем приложении для отложенных заданий, где я не могу асинхронно посылать электронные письма и смс большинству пользователей. А данные хранятся в mongodb, mongoid - это ODM, соединяющий рельсы и mongo.

Моя модель 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-web. Всякий раз, когда я начинаю Resque-работник

QUEUE=item_notification rake resque:work

я получил неинициализированную константу Item , так как я использую resque в качестве самоцвета рельсов и запускаю рейк в корне rails, я считаю, что мои модели mongoid должны быть загружены.

После копания лота я обнаружил, что мы можем явно попросить rake загрузить окружение с помощью

  QUEUE=item_notification rake environment resque:work

но теперь я также получил ту же ошибку неинициализированная константа Item

Может кто-нибудь мне помочь?

и мой

1 Ответ

0 голосов
/ 22 июня 2011

На самом деле, это проблема в среде разработчиков.после добавления этой строки в файл задачи 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

...