我是铁杆新手。我正在尝试使用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。我错过了什么?
我想我想知道,我怎么知道工人是否死了,或者我是否只是错误地称它?我该如何调试?
[更新]好的,所以我找到了这个文件:
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
但是我没有看到任何正在处理的内容。没有工作,没有输出。我假设工作中的代码有问题,但我怎么找到它?