2

遅延ジョブのアプリケーションでresqueを使用しています。この場合、大量のユーザーに非同期で電子メールとSMSを送信できません。そして、データはmongodbに保存され、mongoidはODMがレールとmongoを接続します。

私のモンゴイドモデルは次のようになります

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

初期化されていない定数Itemを取得しました。これは、resqueをrails gemとして使用し、rails rootでrakeを開始しているため、mongoidモデルをロードする必要があると思います。

たくさん掘った後、私は明示的にrakeに環境をロードするように頼むことができることを発見しました

  QUEUE=item_notification rake environment resque:work

しかし今、私は同じエラーを初期化されていない定数アイテムを得ました

誰かが私を助けることができますか?

と私

4

1 に答える 1

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から取得したコード

于 2011-06-22T14:24:56.073 に答える