active_storage_validations 3.0.5 → 4.1.0

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +227 -116
  4. data/Rakefile +13 -15
  5. data/config/locales/da.yml +2 -0
  6. data/config/locales/de.yml +2 -0
  7. data/config/locales/en-GB.yml +2 -0
  8. data/config/locales/en.yml +2 -0
  9. data/config/locales/es.yml +2 -0
  10. data/config/locales/fr.yml +2 -0
  11. data/config/locales/it.yml +2 -0
  12. data/config/locales/ja.yml +2 -0
  13. data/config/locales/nl.yml +2 -0
  14. data/config/locales/pl.yml +2 -0
  15. data/config/locales/pt-BR.yml +2 -0
  16. data/config/locales/ru.yml +2 -0
  17. data/config/locales/sv.yml +2 -0
  18. data/config/locales/tr.yml +2 -0
  19. data/config/locales/uk.yml +2 -0
  20. data/config/locales/vi.yml +2 -0
  21. data/config/locales/zh-CN.yml +2 -0
  22. data/lib/active_storage_validations/analyzer/audio_analyzer.rb +0 -1
  23. data/lib/active_storage_validations/analyzer/content_type_analyzer/file.rb +31 -0
  24. data/lib/active_storage_validations/analyzer/content_type_analyzer/magika.rb +44 -0
  25. data/lib/active_storage_validations/analyzer/content_type_analyzer.rb +15 -24
  26. data/lib/active_storage_validations/analyzer/image_analyzer/image_magick.rb +41 -7
  27. data/lib/active_storage_validations/analyzer/image_analyzer/vips.rb +36 -10
  28. data/lib/active_storage_validations/analyzer/pdf_analyzer.rb +3 -9
  29. data/lib/active_storage_validations/analyzer/shared/asv_ff_probable.rb +5 -4
  30. data/lib/active_storage_validations/analyzer/video_analyzer.rb +0 -1
  31. data/lib/active_storage_validations/analyzer.rb +35 -3
  32. data/lib/active_storage_validations/content_type_validator.rb +24 -6
  33. data/lib/active_storage_validations/dimension_validator.rb +4 -2
  34. data/lib/active_storage_validations/form_builder.rb +43 -0
  35. data/lib/active_storage_validations/matchers/aspect_ratio_validator_matcher.rb +8 -0
  36. data/lib/active_storage_validations/matchers/attached_validator_matcher.rb +4 -0
  37. data/lib/active_storage_validations/matchers/base_comparison_validator_matcher.rb +11 -1
  38. data/lib/active_storage_validations/matchers/content_type_validator_matcher.rb +12 -0
  39. data/lib/active_storage_validations/matchers/dimension_validator_matcher.rb +8 -0
  40. data/lib/active_storage_validations/matchers/duration_validator_matcher.rb +8 -0
  41. data/lib/active_storage_validations/matchers/limit_validator_matcher.rb +4 -0
  42. data/lib/active_storage_validations/matchers/pages_validator_matcher.rb +8 -0
  43. data/lib/active_storage_validations/matchers/processable_file_validator_matcher.rb +8 -0
  44. data/lib/active_storage_validations/matchers/shared/asv_except_onable.rb +57 -0
  45. data/lib/active_storage_validations/matchers/shared/asv_spoofing_protectable.rb +44 -0
  46. data/lib/active_storage_validations/matchers/shared/asv_timeoutable.rb +32 -0
  47. data/lib/active_storage_validations/matchers/with_audio_validator_matcher.rb +114 -0
  48. data/lib/active_storage_validations/matchers.rb +10 -1
  49. data/lib/active_storage_validations/processable_file_validator.rb +60 -1
  50. data/lib/active_storage_validations/railtie.rb +6 -0
  51. data/lib/active_storage_validations/shared/asv_analyzable.rb +66 -8
  52. data/lib/active_storage_validations/shared/asv_attachable.rb +9 -10
  53. data/lib/active_storage_validations/shared/asv_commandable.rb +95 -0
  54. data/lib/active_storage_validations/shared/asv_optionable.rb +5 -1
  55. data/lib/active_storage_validations/version.rb +1 -1
  56. data/lib/active_storage_validations/with_audio_validator.rb +37 -0
  57. data/lib/active_storage_validations.rb +23 -0
  58. metadata +27 -58
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_storage_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Kasyanchuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-17 00:00:00.000000000 Z
11
+ date: 2026-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.4
19
+ version: 7.0.1
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: 6.1.4
26
+ version: 7.0.1
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: 6.1.4
33
+ version: 7.0.1
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: 6.1.4
40
+ version: 7.0.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activestorage
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 6.1.4
47
+ version: 7.0.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: 6.1.4
54
+ version: 7.0.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activesupport
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 6.1.4
61
+ version: 7.0.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 6.1.4
68
+ version: 7.0.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: marcel
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -109,73 +109,33 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: 4.9.5
111
111
  - !ruby/object:Gem::Dependency
112
- name: minitest-focus
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '1.4'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.4'
125
- - !ruby/object:Gem::Dependency
126
- name: minitest-mock_expectations
112
+ name: pry
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '1.2'
132
115
  - - ">="
133
116
  - !ruby/object:Gem::Version
134
- version: 1.2.0
117
+ version: '0'
135
118
  type: :development
136
119
  prerelease: false
137
120
  version_requirements: !ruby/object:Gem::Requirement
138
121
  requirements:
139
- - - "~>"
140
- - !ruby/object:Gem::Version
141
- version: '1.2'
142
122
  - - ">="
143
123
  - !ruby/object:Gem::Version
144
- version: 1.2.0
124
+ version: '0'
145
125
  - !ruby/object:Gem::Dependency
146
- name: minitest-stub_any_instance
126
+ name: rspec-rails
147
127
  requirement: !ruby/object:Gem::Requirement
148
128
  requirements:
149
129
  - - "~>"
150
130
  - !ruby/object:Gem::Version
151
- version: '1.0'
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- version: 1.0.3
131
+ version: '7.0'
155
132
  type: :development
156
133
  prerelease: false
157
134
  version_requirements: !ruby/object:Gem::Requirement
158
135
  requirements:
159
136
  - - "~>"
160
137
  - !ruby/object:Gem::Version
161
- version: '1.0'
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- version: 1.0.3
165
- - !ruby/object:Gem::Dependency
166
- name: pry
167
- requirement: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- version: '0'
172
- type: :development
173
- prerelease: false
174
- version_requirements: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- version: '0'
138
+ version: '7.0'
179
139
  - !ruby/object:Gem::Dependency
180
140
  name: ruby-vips
181
141
  requirement: !ruby/object:Gem::Requirement
@@ -232,7 +192,7 @@ dependencies:
232
192
  - - ">="
233
193
  - !ruby/object:Gem::Version
234
194
  version: '3'
235
- description: Validations for Active Storage (presence)
195
+ description: Validations for Active Storage (presence, size, content type, ...)
236
196
  email:
237
197
  - igorkasyanchuk@gmail.com
238
198
  executables: []
@@ -263,6 +223,8 @@ files:
263
223
  - lib/active_storage_validations/analyzer.rb
264
224
  - lib/active_storage_validations/analyzer/audio_analyzer.rb
265
225
  - lib/active_storage_validations/analyzer/content_type_analyzer.rb
226
+ - lib/active_storage_validations/analyzer/content_type_analyzer/file.rb
227
+ - lib/active_storage_validations/analyzer/content_type_analyzer/magika.rb
266
228
  - lib/active_storage_validations/analyzer/image_analyzer.rb
267
229
  - lib/active_storage_validations/analyzer/image_analyzer/image_magick.rb
268
230
  - lib/active_storage_validations/analyzer/image_analyzer/vips.rb
@@ -279,6 +241,7 @@ files:
279
241
  - lib/active_storage_validations/engine.rb
280
242
  - lib/active_storage_validations/extensors/asv_blob_metadatable.rb
281
243
  - lib/active_storage_validations/extensors/asv_marcelable.rb
244
+ - lib/active_storage_validations/form_builder.rb
282
245
  - lib/active_storage_validations/limit_validator.rb
283
246
  - lib/active_storage_validations/matchers.rb
284
247
  - lib/active_storage_validations/matchers/aspect_ratio_validator_matcher.rb
@@ -294,17 +257,22 @@ files:
294
257
  - lib/active_storage_validations/matchers/shared/asv_allow_blankable.rb
295
258
  - lib/active_storage_validations/matchers/shared/asv_attachable.rb
296
259
  - lib/active_storage_validations/matchers/shared/asv_contextable.rb
260
+ - lib/active_storage_validations/matchers/shared/asv_except_onable.rb
297
261
  - lib/active_storage_validations/matchers/shared/asv_messageable.rb
298
262
  - lib/active_storage_validations/matchers/shared/asv_rspecable.rb
263
+ - lib/active_storage_validations/matchers/shared/asv_spoofing_protectable.rb
264
+ - lib/active_storage_validations/matchers/shared/asv_timeoutable.rb
299
265
  - lib/active_storage_validations/matchers/shared/asv_validatable.rb
300
266
  - lib/active_storage_validations/matchers/size_validator_matcher.rb
301
267
  - lib/active_storage_validations/matchers/total_size_validator_matcher.rb
268
+ - lib/active_storage_validations/matchers/with_audio_validator_matcher.rb
302
269
  - lib/active_storage_validations/pages_validator.rb
303
270
  - lib/active_storage_validations/processable_file_validator.rb
304
271
  - lib/active_storage_validations/railtie.rb
305
272
  - lib/active_storage_validations/shared/asv_active_storageable.rb
306
273
  - lib/active_storage_validations/shared/asv_analyzable.rb
307
274
  - lib/active_storage_validations/shared/asv_attachable.rb
275
+ - lib/active_storage_validations/shared/asv_commandable.rb
308
276
  - lib/active_storage_validations/shared/asv_errorable.rb
309
277
  - lib/active_storage_validations/shared/asv_loggable.rb
310
278
  - lib/active_storage_validations/shared/asv_optionable.rb
@@ -312,6 +280,7 @@ files:
312
280
  - lib/active_storage_validations/size_validator.rb
313
281
  - lib/active_storage_validations/total_size_validator.rb
314
282
  - lib/active_storage_validations/version.rb
283
+ - lib/active_storage_validations/with_audio_validator.rb
315
284
  homepage: https://github.com/igorkasyanchuk/active_storage_validations
316
285
  licenses:
317
286
  - MIT
@@ -328,7 +297,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
328
297
  requirements:
329
298
  - - ">="
330
299
  - !ruby/object:Gem::Version
331
- version: 2.5.0
300
+ version: 3.3.0
332
301
  required_rubygems_version: !ruby/object:Gem::Requirement
333
302
  requirements:
334
303
  - - ">="