active_storage_validations 0.9.5 → 0.9.6
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.
- checksums.yaml +4 -4
- data/README.md +20 -3
- data/lib/active_storage_validations/aspect_ratio_validator.rb +1 -1
- data/lib/active_storage_validations/dimension_validator.rb +1 -1
- data/lib/active_storage_validations/matchers.rb +1 -1
- data/lib/active_storage_validations/metadata.rb +9 -10
- data/lib/active_storage_validations/size_validator.rb +11 -0
- data/lib/active_storage_validations/version.rb +1 -1
- metadata +46 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52bbd6249bbadd7549ccd7daf17673e98ccfd757b15ec954b67c5d7ce3395c84
|
4
|
+
data.tar.gz: cf3664efb821cd7fe60b0536e0d394f900af6fb128161ab13d62d373b2018013
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bece2608d56156a83e468ffaf4ed31dead1769882457c1ff8480586ce0335122b475084f24f914d4d8083c5b4f2b891bda7465b25b2d34272ba76631c313167f
|
7
|
+
data.tar.gz: 56a1cbb1bd5bddc4cce887405eecd6d5e27cc9bfcdca97e636ccf43cf98ce29d9077e1b3e7a602dcb229cd24d25125024c4d83beba6f82050edc773b32d21ca4
|
data/README.md
CHANGED
@@ -58,14 +58,15 @@ end
|
|
58
58
|
|
59
59
|
### More examples
|
60
60
|
|
61
|
-
- Content type validation using symbols. In order to infer the correct mime type from the symbol, the types must be registered with `MimeMagic::EXTENSIONS
|
61
|
+
- Content type validation using symbols. In order to infer the correct mime type from the symbol, the types must be registered with `Marcel::EXTENSIONS` (`MimeMagic::EXTENSIONS` for Rails <= 6.1.3).
|
62
62
|
|
63
63
|
```ruby
|
64
64
|
class User < ApplicationRecord
|
65
65
|
has_one_attached :avatar
|
66
66
|
has_many_attached :photos
|
67
67
|
|
68
|
-
validates :avatar, attached: true, content_type: :png #
|
68
|
+
validates :avatar, attached: true, content_type: :png # Marcel::Magic.by_extension(:png).to_s => 'image/png'
|
69
|
+
# Rails <= 6.1.3; MimeMagic.by_extension(:png).to_s => 'image/png'
|
69
70
|
# or
|
70
71
|
validates :photos, attached: true, content_type: [:png, :jpg, :jpeg]
|
71
72
|
# or
|
@@ -292,6 +293,20 @@ To run tests in root folder of gem:
|
|
292
293
|
* `BUNDLE_GEMFILE=gemfiles/rails_5_2.gemfile bundle exec rake test` to run for Rails 5.2
|
293
294
|
* `BUNDLE_GEMFILE=gemfiles/rails_6_0.gemfile bundle exec rake test` to run for Rails 6.0
|
294
295
|
* `BUNDLE_GEMFILE=gemfiles/rails_6_1.gemfile bundle exec rake test` to run for Rails 6.1
|
296
|
+
* `BUNDLE_GEMFILE=gemfiles/rails_next.gemfile bundle exec rake test` to run for Rails main branch
|
297
|
+
|
298
|
+
Snippet to run in console:
|
299
|
+
|
300
|
+
```
|
301
|
+
BUNDLE_GEMFILE=gemfiles/rails_5_2.gemfile bundle
|
302
|
+
BUNDLE_GEMFILE=gemfiles/rails_6_0.gemfile bundle
|
303
|
+
BUNDLE_GEMFILE=gemfiles/rails_6_1.gemfile bundle
|
304
|
+
BUNDLE_GEMFILE=gemfiles/rails_next.gemfile bundle
|
305
|
+
BUNDLE_GEMFILE=gemfiles/rails_5_2.gemfile bundle exec rake test
|
306
|
+
BUNDLE_GEMFILE=gemfiles/rails_6_0.gemfile bundle exec rake test
|
307
|
+
BUNDLE_GEMFILE=gemfiles/rails_6_1.gemfile bundle exec rake test
|
308
|
+
BUNDLE_GEMFILE=gemfiles/rails_next.gemfile bundle exec rake test
|
309
|
+
```
|
295
310
|
|
296
311
|
## Known issues
|
297
312
|
|
@@ -344,7 +359,9 @@ You are welcome to contribute.
|
|
344
359
|
- https://github.com/jayshepherd
|
345
360
|
- https://github.com/ohbarye
|
346
361
|
- https://github.com/randsina
|
347
|
-
- https://github.com
|
362
|
+
- https://github.com/vietqhoang
|
363
|
+
- https://github.com/kemenaran
|
364
|
+
- https://github.com/jrmhaig
|
348
365
|
|
349
366
|
## License
|
350
367
|
|
@@ -18,7 +18,7 @@ module ActiveStorageValidations
|
|
18
18
|
raise ArgumentError, 'You must pass "aspect_ratio: :OPTION" option to the validator'
|
19
19
|
end
|
20
20
|
|
21
|
-
if Rails
|
21
|
+
if Rails.gem_version >= Gem::Version.new('6.0.0')
|
22
22
|
def validate_each(record, attribute, _value)
|
23
23
|
return true unless record.send(attribute).attached?
|
24
24
|
|
@@ -22,7 +22,7 @@ module ActiveStorageValidations
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.mock_metadata(attachment, width, height)
|
25
|
-
if Rails
|
25
|
+
if Rails.gem_version >= Gem::Version.new('6.0.0')
|
26
26
|
# Mock the Metadata class for rails 6
|
27
27
|
mock = OpenStruct.new(metadata: { width: width, height: height })
|
28
28
|
stub_method(ActiveStorageValidations::Metadata, :new, mock) do
|
@@ -21,17 +21,16 @@ module ActiveStorageValidations
|
|
21
21
|
def read_image
|
22
22
|
is_string = file.is_a?(String)
|
23
23
|
if is_string || file.is_a?(ActiveStorage::Blob)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
blob =
|
25
|
+
if is_string
|
26
|
+
if Rails.gem_version < Gem::Version.new('6.1.0')
|
27
|
+
ActiveStorage::Blob.find_signed(file)
|
28
|
+
else
|
29
|
+
ActiveStorage::Blob.find_signed!(file)
|
30
|
+
end
|
31
|
+
else
|
32
|
+
file
|
31
33
|
end
|
32
|
-
else
|
33
|
-
blob = file
|
34
|
-
end
|
35
34
|
|
36
35
|
tempfile = Tempfile.new(["ActiveStorage-#{blob.id}-", blob.filename.extension_with_delimiter])
|
37
36
|
tempfile.binmode
|
@@ -25,6 +25,9 @@ module ActiveStorageValidations
|
|
25
25
|
next if content_size_valid?(file.blob.byte_size)
|
26
26
|
|
27
27
|
errors_options[:file_size] = number_to_human_size(file.blob.byte_size)
|
28
|
+
errors_options[:min_size] = number_to_human_size(min_size)
|
29
|
+
errors_options[:max_size] = number_to_human_size(max_size)
|
30
|
+
|
28
31
|
record.errors.add(attribute, :file_size_out_of_range, **errors_options)
|
29
32
|
break
|
30
33
|
end
|
@@ -43,5 +46,13 @@ module ActiveStorageValidations
|
|
43
46
|
file_size >= options[:greater_than_or_equal_to]
|
44
47
|
end
|
45
48
|
end
|
49
|
+
|
50
|
+
def min_size
|
51
|
+
options[:between]&.min || options[:greater_than] || options[:greater_than_or_equal_to]
|
52
|
+
end
|
53
|
+
|
54
|
+
def max_size
|
55
|
+
options[:between]&.max || options[:less_than] || options[:less_than_or_equal_to]
|
56
|
+
end
|
46
57
|
end
|
47
58
|
end
|
metadata
CHANGED
@@ -1,17 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_storage_validations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Kasyanchuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activejob
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 5.2.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 5.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activemodel
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 5.2.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 5.2.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activestorage
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 5.2.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 5.2.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
15
57
|
requirement: !ruby/object:Gem::Requirement
|
16
58
|
requirements:
|
17
59
|
- - ">="
|
@@ -153,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
195
|
- !ruby/object:Gem::Version
|
154
196
|
version: '0'
|
155
197
|
requirements: []
|
156
|
-
rubygems_version: 3.
|
198
|
+
rubygems_version: 3.1.4
|
157
199
|
signing_key:
|
158
200
|
specification_version: 4
|
159
201
|
summary: Validations for Active Storage
|