0

私はレールが初めてです。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 

しかし、何も処理されていません。仕事なし、アウトプットなし。ワーカーのコードで何かが壊れていると思いますが、どうすればそれを見つけることができますか?

4

0 に答える 0