私はレールが初めてです。Rails 4.2 と Ruby 2.1.5 を使用して、Active Job 経由で基本的な image_resize ジョブを実行しようとしています。
ここからコードをコピーしようとしました:
http://ryanselk.com/2014/09/25/using-background-jobs-in-rails-42-with-active-job/
私はこの仕事を持っています:
class ResizeImage < ActiveJob::Base
# Set the Queue as Default
queue_as :default
def perform(img_url)
puts " in ResizeImage "
puts img_url
# Open the image into memory
image = MiniMagick::Image.open(img_url)
# Change the image size
image.resize "100x100"
puts output_path
# Write the resulting image
image.write output_path(img_url)
end
end
そして、私はこのrakeタスクを作成しました:
namespace :simple do
# call from command line:
# rake simple:resize_images
desc "Resize images"
task resize_images: :environment do
Dir.foreach('storage') do |next_image|
puts next_image
next if next_image == '.' or next_image == '..'
ResizeImage.perform_later next_image
end
end
end
画像でいっぱいのフォルダーを設定し、タスクを実行すると、次の行が表示されます。
puts next_image
フォルダ内のすべての画像を印刷します。その部分が機能します。
しかし、ジョブの「プット」は実行されません。私はそれが決して起こらないような気がします。
デフォルトのポートで実行されている redis があり、sidekiq gem がインストールされています。私は何が欠けていますか?
ワーカーが死亡したのか、単に間違って呼び出しただけなのか、どうすればわかるのでしょうか? これをデバッグするにはどうすればよいですか?
[UPDATE] さて、私はこのファイルを見つけました:
cat /Users/charryDownloads/redis-2.6.17/dump.rdb
そしてそれは仕事でいっぱいです:
ActiveJob::Q@$Adapters::Sidekiq?:: #Wrapper >arg =[{"job_?K
ResizeImage "@id becede7f4-80cd-4286-be1b-76c94eec8d0c /`?_nam?? iument@n"zachitn_phpxuQqNP.jpg"]}] n`kdafc7cd1e302537 `2aaba@?en`ad_at":1426872747.5798872}?AA2{"retry":true,"queue":"default","class
ActiveJob::Q@$Adapters::Sidekiq?:: #Wrapper >arg =[{"job_?K
ResizeImage "@id bc28303d5-0923-421e-b8ab-fd115513114c /`?_nam?? iument@n"zachitn_phpEXbfmp.jpg"]}] n`kd23ba182e3d0c17eb557ec32 _en`ad_at":1426872747.579301}?AA6{"retry":true,"queue":"default","class
しかし、何も処理されていません。仕事なし、アウトプットなし。ワーカーのコードで何かが壊れていると思いますが、どうすればそれを見つけることができますか?