File tree Expand file tree Collapse file tree 3 files changed +36
-2
lines changed Expand file tree Collapse file tree 3 files changed +36
-2
lines changed Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+
3
+ class ActiveStorage ::PreviewImageJob < ActiveStorage ::BaseJob
4
+ queue_as { ActiveStorage . queues [ :preview_image ] }
5
+
6
+ discard_on ActiveRecord ::RecordNotFound , ActiveStorage ::UnrepresentableError
7
+ retry_on ActiveStorage ::IntegrityError , attempts : 10 , wait : :polynomially_longer
8
+
9
+ def perform ( blob , variations )
10
+ blob . preview ( { } ) . processed
11
+
12
+ variations . each do |transformations |
13
+ blob . preprocessed ( transformations )
14
+ end
15
+ end
16
+ end
Original file line number Diff line number Diff line change @@ -132,8 +132,18 @@ def mirror_blob_later
132
132
end
133
133
134
134
def transform_variants_later
135
- named_variants . each do |_name , named_variant |
136
- blob . preprocessed ( named_variant . transformations ) if named_variant . preprocessed? ( record )
135
+ preprocessed_variations = named_variants . filter_map { |_name , named_variant |
136
+ if named_variant . preprocessed? ( record )
137
+ named_variant . transformations
138
+ end
139
+ }
140
+
141
+ if blob . preview_image_needed_before_processing_variants?
142
+ blob . create_preview_image_later ( preprocessed_variations )
143
+ else
144
+ preprocessed_variations . each do |transformations |
145
+ blob . preprocessed ( transformations )
146
+ end
137
147
end
138
148
end
139
149
Original file line number Diff line number Diff line change @@ -98,6 +98,14 @@ def representable?
98
98
variable? || previewable?
99
99
end
100
100
101
+ def preview_image_needed_before_processing_variants?
102
+ previewable? && !preview_image . attached?
103
+ end
104
+
105
+ def create_preview_image_later ( variations ) # :nodoc:
106
+ ActiveStorage ::PreviewImageJob . perform_later ( self , variations ) if representable?
107
+ end
108
+
101
109
def preprocessed ( transformations ) # :nodoc:
102
110
ActiveStorage ::TransformJob . perform_later ( self , transformations ) if representable?
103
111
end
You can’t perform that action at this time.
0 commit comments