为什么Carrierwave-Backgrounder / Sidekiq会触发冗余图像处理?

时间:2013-09-27 10:55:33

标签: carrierwave sidekiq

我正在使用带有Sidekiq的Carrierwave-Backgrounder来处理用户图标。不幸的是,每次我更新User模型时,它都会触发CarrierWave :: Workers :: ProcessAsset来处理现有图像。有没有办法只在用户有图标或更改现有图标时才能运行后台运行?我已经尝试了一切......

user.rb

class User < ActiveRecord::Base  
  mount_uploader :icon, IconUploader
  process_in_background :icon

icon_uploader.rb

class IconUploader < CarrierWave::Uploader::Base
  include ::CarrierWave::Backgrounder::Delay
  

信息:使用带有选项
的redis:// localhost:6379/0引导Sidekiq 2.14.1   信息:在ruby 2.0.0p247(2013-06-27修订版41674)中运行   信息:开始处理,按Ctrl-C停止

     

CarrierWave :: Workers :: ProcessAsset JID-f2c19a1e33e83be2dce31961 INFO:start   CarrierWave :: Workers :: ProcessAsset JID-f2c19a1e33e83be2dce31961信息:完成:0.733秒   CarrierWave :: Workers :: ProcessAsset JID-a497e66f54609f76678db81a INFO:start   CarrierWave :: Workers :: ProcessAsset JID-a497e66f54609f76678db81a信息:完成:0.32秒   CarrierWave :: Workers :: ProcessAsset JID-576dd9a036323e700e86860c信息:开始   CarrierWave :: Workers :: ProcessAsset JID-576dd9a036323e700e86860c信息:完成:0.588秒

1 个答案:

答案 0 :(得分:1)

宝石去了,carrierwave-backgrounder非常简单。如果字段已“更新”,它们只会将作业排入队列,其中“updated”定义为满足以下任何条件:

  1. avatar_changed?
  2. previous_changes.has_key?(:头像)
  3. remote_avatar_url.present?
  4. avatar_cache.present?
  5. 1&amp;如果您通过作业更改头像,则适用2;如果您允许人们粘贴网址,则适用3;如果您在表单重新加载之间缓存更改,则适用4。

    如果您完全确定没有这些情况,并且您仍然在每次保存时都看到工作,那么您可能希望在问题跟踪器上创建问题。