gourami 0.5.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/gourami/extensions/resources.rb +22 -0
- data/lib/gourami/validation_error.rb +32 -2
- data/lib/gourami/validations.rb +17 -4
- data/lib/gourami/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ed05ee6d0864e3a51c4c29719f7cc6d6b6ca8ba3f360fc8ad950f026db5b69f
|
4
|
+
data.tar.gz: 665904a584c35c5ad55f710a49bed160f039706772f1f8ccd485ccd2351a8ebc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f830e299356968c7248b5d4bc02294299e91929a5e7fb4db7e06e25ec12a581393ce3bbcfcaafe889e65bd67e51406f3a3ed1d4b2b26e375af9c304d8befc205
|
7
|
+
data.tar.gz: 6c55ad5a92607e4387c4221ee2597ab091ab436b70196afbc0acf9de3ad9e2482bc19419ee384e49420478d440c3b45e2d1e4e68e56a220e0653ee8fce98d9fb
|
data/README.md
CHANGED
@@ -252,7 +252,9 @@ end
|
|
252
252
|
|
253
253
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
254
254
|
|
255
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
255
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
256
|
+
|
257
|
+
To add another gem owner to gourami gem `gem owner --add john.smith@example.com gourami`
|
256
258
|
|
257
259
|
## Contributing
|
258
260
|
|
@@ -91,6 +91,28 @@ module Gourami
|
|
91
91
|
resource_errors.values.flat_map(&:values).map(&:values).flatten.any?
|
92
92
|
end
|
93
93
|
|
94
|
+
# Replace the existing resource errors with the provided errors Hash.
|
95
|
+
#
|
96
|
+
# @param new_resource_errors [Hash<Symbol, Hash<Symbol, Hash<Symbol, Array>>>]
|
97
|
+
#
|
98
|
+
# @return [Hash<Symbol, Hash<Symbol, Hash<Symbol, Array>>>]
|
99
|
+
def clear_and_set_resource_errors(new_resource_errors)
|
100
|
+
new_resource_errors = new_resource_errors.dup
|
101
|
+
resource_errors.clear
|
102
|
+
resource_errors.merge!(new_resource_errors)
|
103
|
+
|
104
|
+
resource_errors
|
105
|
+
end
|
106
|
+
|
107
|
+
def handle_validation_error(error)
|
108
|
+
super(error)
|
109
|
+
clear_and_set_resource_errors(error.resource_errors) unless error.resource_errors.nil?
|
110
|
+
end
|
111
|
+
|
112
|
+
def raise_validate_errors
|
113
|
+
raise ValidationError.new(errors, resource_errors)
|
114
|
+
end
|
115
|
+
|
94
116
|
end
|
95
117
|
end
|
96
118
|
end
|
@@ -9,20 +9,39 @@ module Gourami
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
def self.stringify_resource_errors(resource_errors)
|
13
|
+
[].tap do |array|
|
14
|
+
resource_errors.each do |resource_namespace, resource_namespace_errors|
|
15
|
+
resource_namespace_errors.each do |resource_uid, resource_uid_errors|
|
16
|
+
resource_uid_errors.each do |attribute_name, error|
|
17
|
+
array.push("#{resource_namespace}:#{resource_uid}:#{attribute_name}: #{error}")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
12
24
|
# !@attribute [r] errors
|
13
25
|
# @return [Hash<Symbol, Array>]
|
14
26
|
attr_reader :errors
|
15
27
|
|
28
|
+
# !@attribute [r] resource_errors
|
29
|
+
# @return [Hash<Symbol, Hash<Symbol, Hash<Symbol, Array>>>]
|
30
|
+
attr_reader :resource_errors
|
31
|
+
|
16
32
|
# Initialize the Gourami::ValidationError.
|
17
33
|
#
|
18
34
|
# @param errors [Hash<Symbol, Array>]
|
19
|
-
|
35
|
+
# @param resource_errors [Hash<Symbol, Hash<Symbol, Hash<Symbol, Array>>>]
|
36
|
+
def initialize(errors, resource_errors = {})
|
37
|
+
@resource_errors = resource_errors
|
20
38
|
@errors = errors
|
39
|
+
|
21
40
|
super(message)
|
22
41
|
end
|
23
42
|
|
24
43
|
def message
|
25
|
-
@message ||=
|
44
|
+
@message ||= stringify_all_errors
|
26
45
|
end
|
27
46
|
|
28
47
|
private
|
@@ -31,5 +50,16 @@ module Gourami
|
|
31
50
|
ValidationError.stringify_errors(errors)
|
32
51
|
end
|
33
52
|
|
53
|
+
def stringify_resource_errors
|
54
|
+
ValidationError.stringify_resource_errors(resource_errors)
|
55
|
+
end
|
56
|
+
|
57
|
+
def stringify_all_errors
|
58
|
+
messages = []
|
59
|
+
messages << "Validation failed with errors: #{stringify_errors.join("\n")}" unless errors.nil? || errors.empty?
|
60
|
+
messages << "Validation failed with resource errors: #{stringify_resource_errors.join("\n")}" unless resource_errors.nil? || resource_errors.empty?
|
61
|
+
messages.join("\n")
|
62
|
+
end
|
63
|
+
|
34
64
|
end
|
35
65
|
end
|
data/lib/gourami/validations.rb
CHANGED
@@ -15,11 +15,16 @@ module Gourami
|
|
15
15
|
# @raise [Gourami::ValidationError]
|
16
16
|
def perform!
|
17
17
|
if valid?
|
18
|
-
|
18
|
+
begin
|
19
|
+
returned = perform
|
20
|
+
rescue Gourami::ValidationError => error
|
21
|
+
handle_validation_error(error)
|
22
|
+
raise
|
23
|
+
end
|
19
24
|
end
|
20
25
|
|
21
26
|
if any_errors?
|
22
|
-
|
27
|
+
raise_validate_errors
|
23
28
|
end
|
24
29
|
|
25
30
|
returned
|
@@ -46,9 +51,9 @@ module Gourami
|
|
46
51
|
|
47
52
|
# Replace the existing errors with the provided errors Hash.
|
48
53
|
#
|
49
|
-
# @param new_errors
|
54
|
+
# @param new_errors Hash<Symbol, Array>
|
50
55
|
#
|
51
|
-
# @return
|
56
|
+
# @return Hash<Symbol, Array>
|
52
57
|
def clear_and_set_errors(new_errors)
|
53
58
|
new_errors = new_errors.dup
|
54
59
|
errors.clear
|
@@ -57,6 +62,14 @@ module Gourami
|
|
57
62
|
errors
|
58
63
|
end
|
59
64
|
|
65
|
+
def raise_validate_errors
|
66
|
+
raise ValidationError.new(errors)
|
67
|
+
end
|
68
|
+
|
69
|
+
def handle_validation_error(error)
|
70
|
+
clear_and_set_errors(error.errors) unless error.errors.nil?
|
71
|
+
end
|
72
|
+
|
60
73
|
# Return true if there given attribute has any errors.
|
61
74
|
def attribute_has_errors?(attribute_name)
|
62
75
|
errors[attribute_name.to_sym].any?
|
data/lib/gourami/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gourami
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TSMMark
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -118,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
|
-
|
122
|
-
rubygems_version: 2.7.7
|
121
|
+
rubygems_version: 3.0.3
|
123
122
|
signing_key:
|
124
123
|
specification_version: 4
|
125
124
|
summary: Keep your Routes, Controllers and Models thin.
|