私はいくつかのメソッドを実行するコードコードを持っており、そのメソッドを以下のようにself.perform内に配置しました
class StartWorker
@queue = :worker
def self.perform
puts "hello"
Parser.find_all_by_class_name("Parser").first.sites.each do |s|
site = Site.find(s.id)
parser = Parser.new(site)
parser.run
end
end
end
def self.performとこれの終わりにコメントしてファイルを実行すると、目的の結果が正しく表示されますが、コメントを外してこれをバックグラウンドタスクとして配置しようとすると、何も表示されないresqueパネルにサイレントに失敗します。また、コマンドプロンプトに出力がありません
resque_schedule.yml内のresque-schedulerからこれをキューに入れています
start_worker:
cron: "55 6 * * *"
class: StartWorker
queue: worker
args:
description: "This job starts all the worker jobs"
def self.performメソッド内にいくつかの簡単なputsステートメントを入れて、コントロールがメソッド内を通過しているかどうかを確認しようとしましたが、コントロールがself.performメソッド内を通過していないようです。
また、rails環境をロードしようとしましたが、その中にresqueが必要でしたが、変更を加える前に、上記のすべてに対してbundle exec rake resque:work QUEUE='*'スクリプトを実行しました。
Railsコンソール内でResque.infoを試してみましたが、このように表示されています。
{:working=>0, :queues=>1, :failed=>1, :environment=>"development", :servers=>["redis://localhost:6379/0"], :pending=>0, :processed=>1, :workers=>1}
これを克服する方法はありますか?