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



我正在使用带有Sidekiq的Carrierwave-Backgrounder来处理用户图标。不幸的是,每次我更新用户模型时,它都会触发CarrierWave::Workers::P rocessAsset来处理现有图像。有没有办法让后台程序仅在用户有图标或更改现有图标时才运行?我什么都试过了...

用户.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 停止

运营商波::工人::P罗塞斯资产 JID-f2c19a1e33e83be2dce31961 信息:开始CarrierWave::工人::P rocessAsset JID-f2c19a1e33e83be2dce31961 信息:完成:0.733秒运营商波::工人::P罗塞斯资产 JID-a497e66f54609f76678db81a 信息:开始载波::工人::P罗塞斯资产 JID-a497e66f54609f76678db81a 信息:完成:0.32 秒运营商波::工人::P罗塞斯资产JID-576dd9a036323e700e86860c 信息:开始运营商波::工人::P罗塞斯资产 JID-576dd9a036323e700e86860c 信息:完成:0.588 秒

随着宝石的发展,载波背景非常简单。仅当字段已"更新"时,它们才会对作业进行排队,其中"已更新"定义为满足以下任一条件:

  1. avatar_changed?
  2. previous_changes.has_key?(:头像(
  3. remote_avatar_url.现在?
  4. avatar_cache.现在?

如果您通过分配更改头像,则 1 和 2 适用,如果您让人们粘贴 URL,则 3 适用,如果您在表单重新加载之间缓存更改,则 4 适用。

如果您绝对确定这些都不是这种情况,并且您仍然在每次保存时看到作业,则可能需要在他们的问题跟踪器上创建一个问题。

最新更新