carrierwave 1.3.4 → 3.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +235 -91
  3. data/lib/carrierwave/compatibility/paperclip.rb +4 -2
  4. data/lib/carrierwave/downloader/base.rb +101 -0
  5. data/lib/carrierwave/downloader/remote_file.rb +68 -0
  6. data/lib/carrierwave/locale/en.yml +9 -6
  7. data/lib/carrierwave/mount.rb +53 -61
  8. data/lib/carrierwave/mounter.rb +167 -77
  9. data/lib/carrierwave/orm/activerecord.rb +23 -58
  10. data/lib/carrierwave/processing/mini_magick.rb +108 -123
  11. data/lib/carrierwave/processing/rmagick.rb +11 -15
  12. data/lib/carrierwave/processing/vips.rb +284 -0
  13. data/lib/carrierwave/processing.rb +1 -0
  14. data/lib/carrierwave/sanitized_file.rb +60 -66
  15. data/lib/carrierwave/storage/abstract.rb +5 -5
  16. data/lib/carrierwave/storage/file.rb +6 -5
  17. data/lib/carrierwave/storage/fog.rb +101 -62
  18. data/lib/carrierwave/storage.rb +1 -0
  19. data/lib/carrierwave/test/matchers.rb +11 -7
  20. data/lib/carrierwave/uploader/cache.rb +40 -24
  21. data/lib/carrierwave/uploader/callbacks.rb +1 -1
  22. data/lib/carrierwave/uploader/configuration.rb +38 -19
  23. data/lib/carrierwave/uploader/content_type_allowlist.rb +62 -0
  24. data/lib/carrierwave/uploader/content_type_denylist.rb +62 -0
  25. data/lib/carrierwave/uploader/dimension.rb +66 -0
  26. data/lib/carrierwave/uploader/download.rb +2 -123
  27. data/lib/carrierwave/uploader/extension_allowlist.rb +63 -0
  28. data/lib/carrierwave/uploader/extension_denylist.rb +64 -0
  29. data/lib/carrierwave/uploader/file_size.rb +2 -2
  30. data/lib/carrierwave/uploader/mountable.rb +6 -0
  31. data/lib/carrierwave/uploader/processing.rb +42 -7
  32. data/lib/carrierwave/uploader/proxy.rb +17 -4
  33. data/lib/carrierwave/uploader/serialization.rb +1 -1
  34. data/lib/carrierwave/uploader/store.rb +47 -7
  35. data/lib/carrierwave/uploader/url.rb +7 -4
  36. data/lib/carrierwave/uploader/versions.rb +157 -109
  37. data/lib/carrierwave/uploader.rb +10 -17
  38. data/lib/carrierwave/utilities/file_name.rb +47 -0
  39. data/lib/carrierwave/utilities/uri.rb +14 -11
  40. data/lib/carrierwave/utilities.rb +1 -0
  41. data/lib/carrierwave/validations/active_model.rb +7 -9
  42. data/lib/carrierwave/version.rb +1 -1
  43. data/lib/carrierwave.rb +13 -17
  44. data/lib/generators/templates/{uploader.rb → uploader.rb.erb} +3 -3
  45. data/lib/generators/uploader_generator.rb +3 -3
  46. metadata +96 -35
  47. data/lib/carrierwave/uploader/content_type_blacklist.rb +0 -48
  48. data/lib/carrierwave/uploader/content_type_whitelist.rb +0 -48
  49. data/lib/carrierwave/uploader/extension_blacklist.rb +0 -51
  50. data/lib/carrierwave/uploader/extension_whitelist.rb +0 -52
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 3.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Nicklas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-24 00:00:00.000000000 Z
11
+ date: 2024-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,76 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 6.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 6.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.0.0
33
+ version: 6.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.0.0
40
+ version: 6.0.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: mime-types
42
+ name: image_processing
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: '1.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
- name: ssrf_filter
56
+ name: marcel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "<"
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
60
67
  - !ruby/object:Gem::Version
61
- version: 1.1.0
68
+ version: 1.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: addressable
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
62
73
  - - "~>"
63
74
  - !ruby/object:Gem::Version
64
- version: '1.0'
75
+ version: '2.6'
65
76
  type: :runtime
66
77
  prerelease: false
67
78
  version_requirements: !ruby/object:Gem::Requirement
68
79
  requirements:
69
- - - "<"
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ssrf_filter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
70
88
  - !ruby/object:Gem::Version
71
- version: 1.1.0
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
72
94
  - - "~>"
73
95
  - !ruby/object:Gem::Version
74
96
  version: '1.0'
75
97
  - !ruby/object:Gem::Dependency
76
- name: rails
98
+ name: csv
77
99
  requirement: !ruby/object:Gem::Requirement
78
100
  requirements:
79
- - - ">="
101
+ - - "~>"
80
102
  - !ruby/object:Gem::Version
81
- version: 5.0.0
103
+ version: '3.0'
82
104
  type: :development
83
105
  prerelease: false
84
106
  version_requirements: !ruby/object:Gem::Requirement
85
107
  requirements:
86
- - - ">="
108
+ - - "~>"
87
109
  - !ruby/object:Gem::Version
88
- version: 5.0.0
110
+ version: '3.0'
89
111
  - !ruby/object:Gem::Dependency
90
112
  name: cucumber
91
113
  requirement: !ruby/object:Gem::Requirement
@@ -115,7 +137,7 @@ dependencies:
115
137
  - !ruby/object:Gem::Version
116
138
  version: '3.4'
117
139
  - !ruby/object:Gem::Dependency
118
- name: webmock
140
+ name: rspec-retry
119
141
  requirement: !ruby/object:Gem::Requirement
120
142
  requirements:
121
143
  - - ">="
@@ -129,21 +151,21 @@ dependencies:
129
151
  - !ruby/object:Gem::Version
130
152
  version: '0'
131
153
  - !ruby/object:Gem::Dependency
132
- name: fog-core
154
+ name: rubocop
133
155
  requirement: !ruby/object:Gem::Requirement
134
156
  requirements:
135
157
  - - "~>"
136
158
  - !ruby/object:Gem::Version
137
- version: 2.1.0
159
+ version: '1.28'
138
160
  type: :development
139
161
  prerelease: false
140
162
  version_requirements: !ruby/object:Gem::Requirement
141
163
  requirements:
142
164
  - - "~>"
143
165
  - !ruby/object:Gem::Version
144
- version: 2.1.0
166
+ version: '1.28'
145
167
  - !ruby/object:Gem::Dependency
146
- name: fog-aws
168
+ name: webmock
147
169
  requirement: !ruby/object:Gem::Requirement
148
170
  requirements:
149
171
  - - ">="
@@ -157,7 +179,7 @@ dependencies:
157
179
  - !ruby/object:Gem::Version
158
180
  version: '0'
159
181
  - !ruby/object:Gem::Dependency
160
- name: fog-google
182
+ name: fog-aws
161
183
  requirement: !ruby/object:Gem::Requirement
162
184
  requirements:
163
185
  - - ">="
@@ -170,6 +192,26 @@ dependencies:
170
192
  - - ">="
171
193
  - !ruby/object:Gem::Version
172
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: fog-google
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.7'
202
+ - - "!="
203
+ - !ruby/object:Gem::Version
204
+ version: 1.12.1
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: '1.7'
212
+ - - "!="
213
+ - !ruby/object:Gem::Version
214
+ version: 1.12.1
173
215
  - !ruby/object:Gem::Dependency
174
216
  name: fog-local
175
217
  requirement: !ruby/object:Gem::Requirement
@@ -268,6 +310,20 @@ dependencies:
268
310
  - - ">="
269
311
  - !ruby/object:Gem::Version
270
312
  version: '0'
313
+ - !ruby/object:Gem::Dependency
314
+ name: pry-byebug
315
+ requirement: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - ">="
318
+ - !ruby/object:Gem::Version
319
+ version: '0'
320
+ type: :development
321
+ prerelease: false
322
+ version_requirements: !ruby/object:Gem::Requirement
323
+ requirements:
324
+ - - ">="
325
+ - !ruby/object:Gem::Version
326
+ version: '0'
271
327
  description: Upload files in your Ruby applications, map them to a range of ORMs,
272
328
  store them on different backends.
273
329
  email:
@@ -280,6 +336,8 @@ files:
280
336
  - README.md
281
337
  - lib/carrierwave.rb
282
338
  - lib/carrierwave/compatibility/paperclip.rb
339
+ - lib/carrierwave/downloader/base.rb
340
+ - lib/carrierwave/downloader/remote_file.rb
283
341
  - lib/carrierwave/error.rb
284
342
  - lib/carrierwave/locale/en.yml
285
343
  - lib/carrierwave/mount.rb
@@ -288,6 +346,7 @@ files:
288
346
  - lib/carrierwave/processing.rb
289
347
  - lib/carrierwave/processing/mini_magick.rb
290
348
  - lib/carrierwave/processing/rmagick.rb
349
+ - lib/carrierwave/processing/vips.rb
291
350
  - lib/carrierwave/sanitized_file.rb
292
351
  - lib/carrierwave/storage.rb
293
352
  - lib/carrierwave/storage/abstract.rb
@@ -298,12 +357,13 @@ files:
298
357
  - lib/carrierwave/uploader/cache.rb
299
358
  - lib/carrierwave/uploader/callbacks.rb
300
359
  - lib/carrierwave/uploader/configuration.rb
301
- - lib/carrierwave/uploader/content_type_blacklist.rb
302
- - lib/carrierwave/uploader/content_type_whitelist.rb
360
+ - lib/carrierwave/uploader/content_type_allowlist.rb
361
+ - lib/carrierwave/uploader/content_type_denylist.rb
303
362
  - lib/carrierwave/uploader/default_url.rb
363
+ - lib/carrierwave/uploader/dimension.rb
304
364
  - lib/carrierwave/uploader/download.rb
305
- - lib/carrierwave/uploader/extension_blacklist.rb
306
- - lib/carrierwave/uploader/extension_whitelist.rb
365
+ - lib/carrierwave/uploader/extension_allowlist.rb
366
+ - lib/carrierwave/uploader/extension_denylist.rb
307
367
  - lib/carrierwave/uploader/file_size.rb
308
368
  - lib/carrierwave/uploader/mountable.rb
309
369
  - lib/carrierwave/uploader/processing.rb
@@ -314,10 +374,11 @@ files:
314
374
  - lib/carrierwave/uploader/url.rb
315
375
  - lib/carrierwave/uploader/versions.rb
316
376
  - lib/carrierwave/utilities.rb
377
+ - lib/carrierwave/utilities/file_name.rb
317
378
  - lib/carrierwave/utilities/uri.rb
318
379
  - lib/carrierwave/validations/active_model.rb
319
380
  - lib/carrierwave/version.rb
320
- - lib/generators/templates/uploader.rb
381
+ - lib/generators/templates/uploader.rb.erb
321
382
  - lib/generators/uploader_generator.rb
322
383
  homepage: https://github.com/carrierwaveuploader/carrierwave
323
384
  licenses:
@@ -332,14 +393,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
332
393
  requirements:
333
394
  - - ">="
334
395
  - !ruby/object:Gem::Version
335
- version: 2.0.0
396
+ version: 2.5.0
336
397
  required_rubygems_version: !ruby/object:Gem::Requirement
337
398
  requirements:
338
399
  - - ">="
339
400
  - !ruby/object:Gem::Version
340
401
  version: '0'
341
402
  requirements: []
342
- rubygems_version: 3.4.6
403
+ rubygems_version: 3.4.10
343
404
  signing_key:
344
405
  specification_version: 4
345
406
  summary: Ruby file upload library
@@ -1,48 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module ContentTypeBlacklist
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- before :cache, :check_content_type_blacklist!
8
- end
9
-
10
- ##
11
- # Override this method in your uploader to provide a blacklist of files content types
12
- # which are not allowed to be uploaded.
13
- # Not only strings but Regexp are allowed as well.
14
- #
15
- # === Returns
16
- #
17
- # [NilClass, String, Regexp, Array[String, Regexp]] a blacklist of content types which are not allowed to be uploaded
18
- #
19
- # === Examples
20
- #
21
- # def content_type_blacklist
22
- # %w(text/json application/json)
23
- # end
24
- #
25
- # Basically the same, but using a Regexp:
26
- #
27
- # def content_type_blacklist
28
- # [/(text|application)\/json/]
29
- # end
30
- #
31
- def content_type_blacklist; end
32
-
33
- private
34
-
35
- def check_content_type_blacklist!(new_file)
36
- content_type = new_file.content_type
37
- if content_type_blacklist && blacklisted_content_type?(content_type)
38
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.content_type_blacklist_error", content_type: content_type)
39
- end
40
- end
41
-
42
- def blacklisted_content_type?(content_type)
43
- Array(content_type_blacklist).any? { |item| content_type =~ /#{item}/ }
44
- end
45
-
46
- end # ContentTypeBlacklist
47
- end # Uploader
48
- end # CarrierWave
@@ -1,48 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module ContentTypeWhitelist
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- before :cache, :check_content_type_whitelist!
8
- end
9
-
10
- ##
11
- # Override this method in your uploader to provide a whitelist of files content types
12
- # which are allowed to be uploaded.
13
- # Not only strings but Regexp are allowed as well.
14
- #
15
- # === Returns
16
- #
17
- # [NilClass, String, Regexp, Array[String, Regexp]] a whitelist of content types which are allowed to be uploaded
18
- #
19
- # === Examples
20
- #
21
- # def content_type_whitelist
22
- # %w(text/json application/json)
23
- # end
24
- #
25
- # Basically the same, but using a Regexp:
26
- #
27
- # def content_type_whitelist
28
- # [/(text|application)\/json/]
29
- # end
30
- #
31
- def content_type_whitelist; end
32
-
33
- private
34
-
35
- def check_content_type_whitelist!(new_file)
36
- content_type = new_file.content_type
37
- if content_type_whitelist && !whitelisted_content_type?(content_type)
38
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.content_type_whitelist_error", content_type: content_type, allowed_types: Array(content_type_whitelist).join(", "))
39
- end
40
- end
41
-
42
- def whitelisted_content_type?(content_type)
43
- Array(content_type_whitelist).any? { |item| content_type =~ /#{item}/ }
44
- end
45
-
46
- end # ContentTypeWhitelist
47
- end # Uploader
48
- end # CarrierWave
@@ -1,51 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module ExtensionBlacklist
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- before :cache, :check_extension_blacklist!
8
- end
9
-
10
- ##
11
- # Override this method in your uploader to provide a black list of extensions which
12
- # are prohibited to be uploaded. Compares the file's extension case insensitive.
13
- # Furthermore, not only strings but Regexp are allowed as well.
14
- #
15
- # When using a Regexp in the black list, `\A` and `\z` are automatically added to
16
- # the Regexp expression, also case insensitive.
17
- #
18
- # === Returns
19
-
20
- # [NilClass, String, Regexp, Array[String, Regexp]] a black list of extensions which are prohibited to be uploaded
21
- #
22
- # === Examples
23
- #
24
- # def extension_blacklist
25
- # %w(swf tiff)
26
- # end
27
- #
28
- # Basically the same, but using a Regexp:
29
- #
30
- # def extension_blacklist
31
- # [/swf/, 'tiff']
32
- # end
33
- #
34
-
35
- def extension_blacklist; end
36
-
37
- private
38
-
39
- def check_extension_blacklist!(new_file)
40
- extension = new_file.extension.to_s
41
- if extension_blacklist && blacklisted_extension?(extension)
42
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_blacklist_error", extension: new_file.extension.inspect, prohibited_types: Array(extension_blacklist).join(", "))
43
- end
44
- end
45
-
46
- def blacklisted_extension?(extension)
47
- Array(extension_blacklist).any? { |item| extension =~ /\A#{item}\z/i }
48
- end
49
- end
50
- end
51
- end
@@ -1,52 +0,0 @@
1
- module CarrierWave
2
- module Uploader
3
- module ExtensionWhitelist
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- before :cache, :check_extension_whitelist!
8
- end
9
-
10
- ##
11
- # Override this method in your uploader to provide a white list of extensions which
12
- # are allowed to be uploaded. Compares the file's extension case insensitive.
13
- # Furthermore, not only strings but Regexp are allowed as well.
14
- #
15
- # When using a Regexp in the white list, `\A` and `\z` are automatically added to
16
- # the Regexp expression, also case insensitive.
17
- #
18
- # === Returns
19
- #
20
- # [NilClass, String, Regexp, Array[String, Regexp]] a white list of extensions which are allowed to be uploaded
21
- #
22
- # === Examples
23
- #
24
- # def extension_whitelist
25
- # %w(jpg jpeg gif png)
26
- # end
27
- #
28
- # Basically the same, but using a Regexp:
29
- #
30
- # def extension_whitelist
31
- # [/jpe?g/, 'gif', 'png']
32
- # end
33
- #
34
- def extension_whitelist; end
35
-
36
- private
37
-
38
- def check_extension_whitelist!(new_file)
39
- extension = new_file.extension.to_s
40
- if extension_whitelist && !whitelisted_extension?(extension)
41
- raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_whitelist_error", extension: new_file.extension.inspect, allowed_types: Array(extension_whitelist).join(", "))
42
- end
43
- end
44
-
45
- def whitelisted_extension?(extension)
46
- downcase_extension = extension.downcase
47
- Array(extension_whitelist).any? { |item| downcase_extension =~ /\A#{item}\z/i }
48
- end
49
-
50
- end # ExtensionWhitelist
51
- end # Uploader
52
- end # CarrierWave