withassociates/slices

View on GitHub
lib/tasks/assets.rake

Summary

Maintainability
Test Coverage
module Slices
  module Tasks

    def self.remove_all_unused_styles
      Asset.all.each do |asset|
        remove_unused_styles(asset)
      end
    end

    def self.remove_unused_styles(asset)
      asset.remove_attribute :dimensions

      used_styles = asset.file_dimensions.symbolize_keys.keys << :original
      styles_to_clear = asset.file.styles.keys - used_styles
      asset.file.clear(*styles_to_clear)
      asset.save
    end
  end
end

namespace :slices do
  namespace :assets do

    desc "Mark assets for reprocessing"
    task reprocess: :environment do
      Asset.update_all(file_dimensions: {})
    end

    desc "Remove unused asset styles"
    task remove_unused_styles: :environment do
      Slices::Tasks.remove_all_unused_styles
    end
  end
end