通过Rails 4.2 ActiveJob向Sidekiq添加作业,但作业永远不会运行

时间:2015-03-20 17:42:07

标签: ruby-on-rails sidekiq rails-activejob

我是铁杆新手。我正在尝试使用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 

但是我没有看到任何正在处理的内容。没有工作,没有输出。我假设工作中的代码有问题,但我怎么找到它?

0 个答案:

没有答案