Skip to content

Commit 7a278a2

Browse files
committed
refactor(AssetUploader): extract 'imageable' methods to concern
1 parent 82fe881 commit 7a278a2

File tree

2 files changed

+31
-27
lines changed

2 files changed

+31
-27
lines changed

app/uploaders/asset_uploader.rb

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class AssetUploader < Shrine
55
include ImageProcessing::MiniMagick
6+
include Imageable
67

78
plugin :determine_mime_type
89
plugin :store_dimensions
@@ -50,31 +51,4 @@ def generate_location(io, context)
5051

5152
ERB.new(context[:config][:metadata][:path]).result(binding)
5253
end
53-
54-
def image?(io)
55-
MimeMagic.new(io.data['metadata']['mime_type']).mediatype == 'image'
56-
end
57-
58-
private
59-
60-
def optimize_image!(image, image_optim)
61-
pathname = image_optim.optimize_image!(image) # TODO: move to ActiveJob
62-
pathname ? pathname.open : image
63-
end
64-
65-
def image_optim_for(image_optim_config)
66-
ImageOptim.new(process_image_optim_config(image_optim_config))
67-
end
68-
69-
def process_image_optim_config(image_optim_config)
70-
processed_image_optim_config = image_optim_config.merge(pngout: false, svgo: false, verbose: true, skip_missing_workers: false)
71-
processed_image_optim_config.extend(Hashie::Extensions::DeepLocate)
72-
quality_range_hashes = processed_image_optim_config.deep_locate -> (key, value, object) { key == :quality_range }
73-
quality_range_hashes.each do |quality_range_hash|
74-
quality_range_hash[:quality] = quality_range_hash[:quality_range][:begin]..quality_range_hash[:quality_range][:end]
75-
quality_range_hash.delete(:quality_range)
76-
end
77-
78-
processed_image_optim_config
79-
end
8054
end

app/uploaders/concerns/imageable.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module Imageable
2+
extend ActiveSupport::Concern
3+
4+
included do
5+
def image?(io)
6+
MimeMagic.new(io.data['metadata']['mime_type']).mediatype == 'image'
7+
end
8+
9+
def optimize_image!(image, image_optim)
10+
pathname = image_optim.optimize_image!(image) # TODO: move to ActiveJob
11+
pathname ? pathname.open : image
12+
end
13+
14+
def image_optim_for(image_optim_config)
15+
ImageOptim.new(process_image_optim_config(image_optim_config))
16+
end
17+
18+
def process_image_optim_config(image_optim_config)
19+
processed_image_optim_config = image_optim_config.merge(pngout: false, svgo: false, verbose: true, skip_missing_workers: false)
20+
processed_image_optim_config.extend(Hashie::Extensions::DeepLocate)
21+
quality_range_hashes = processed_image_optim_config.deep_locate -> (key, value, object) { key == :quality_range }
22+
quality_range_hashes.each do |quality_range_hash|
23+
quality_range_hash[:quality] = quality_range_hash[:quality_range][:begin]..quality_range_hash[:quality_range][:end]
24+
quality_range_hash.delete(:quality_range)
25+
end
26+
27+
processed_image_optim_config
28+
end
29+
end
30+
end

0 commit comments

Comments
 (0)