civil_service 2.3.0 → 2.4.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -9
- data/Gemfile.lock +11 -14
- data/lib/civil_service/service.rb +7 -7
- data/lib/civil_service/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cc309b95109e1703e10facefa160b6b3ec0d2c9cdeecc55c4d7fcca4fd3b788
|
4
|
+
data.tar.gz: bd935e564c4170b464e0fc5a577d885201c4a506f57bd5dd67ca69ceb5f5de5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10fbcc6182d07401c5e13580246511f9b8d9de9724bf049e21e0b343dee7b147dd2447ad1b58660488366dd892e05cfd5a2dba30dfeb2bf02d7d526117f09316
|
7
|
+
data.tar.gz: cb07f3d6487e639cac8c0645dc2b316a0ef017986e7d3bea0e0eaef66e66f37241b34d08989f2c558e737a549afba2e8d8c0dd49ca9cdc642c7af9c0d7914578
|
data/CHANGELOG.md
CHANGED
@@ -1,30 +1,36 @@
|
|
1
|
+
# Version 2.4.0 - January 15, 2021
|
2
|
+
|
3
|
+
- `#call`, `#call_and_raise`, and `#call!` now accept an optional keyword parameter called `validate`. This will
|
4
|
+
skip validations if passed `false`. (`true` is the default value.)
|
5
|
+
- `#call!` now takes advantage of the `validate:` parameter internally to avoid running validations twice.
|
6
|
+
|
1
7
|
# Version 2.3.0 - April 3, 2020
|
2
8
|
|
3
|
-
|
9
|
+
- `#call!` now raises the underlying exception if the service threw an exception,
|
4
10
|
rather than hiding it inside a `CivilService::ServiceFailure`.
|
5
11
|
|
6
12
|
# Version 2.2.1 - October 4, 2019
|
7
13
|
|
8
|
-
|
14
|
+
- `CivilService::MultiResultService::MultiResult#exception` now checks the underlying exception on
|
9
15
|
the root result object, in case the service threw an exception.
|
10
16
|
|
11
17
|
# Version 2.2.0 - September 26, 2019
|
12
18
|
|
13
|
-
|
19
|
+
- Services now have a new `#call_and_raise` method, which will return a result object on failure
|
14
20
|
but will raise exceptions that are thrown inside the service call (effectively, the behavior of
|
15
21
|
`#call` in CivilService 1.0.0).
|
16
|
-
|
22
|
+
- Added a new mixin called `CivilService::MultiResultService`, which allows creating services whose
|
17
23
|
results are composed of multiple results that are aggregated together.
|
18
24
|
|
19
25
|
# Version 2.1.0 - September 25, 2019
|
20
26
|
|
21
|
-
|
27
|
+
- `CivilService::Result#errors` now always returns an Errors object even if it hasn't been
|
22
28
|
explicitly set.
|
23
29
|
|
24
30
|
# Version 2.0.0 - June 26, 2019
|
25
31
|
|
26
|
-
|
27
|
-
raised inside the service.
|
32
|
+
- BREAKING CHANGE: The behavior of `CivilService::Service#call` has changed when exceptions are
|
33
|
+
raised inside the service. The `call` method will now catch the exception and return a failing
|
28
34
|
result object, with the exception message as an error on `:base`.
|
29
35
|
|
30
36
|
The behavior of `call!` has not changed: a failing result will be raised as a
|
@@ -35,8 +41,9 @@
|
|
35
41
|
will (almost) never raise an exception, whereas `call!` can raise an exception.
|
36
42
|
|
37
43
|
The exception to this rule (pun intended, always intend your puns) is that `call` will not catch
|
38
|
-
exceptions that don't inherit from `StandardError`, such as `SystemExit`.
|
44
|
+
exceptions that don't inherit from `StandardError`, such as `SystemExit`. See
|
39
45
|
[Honeybadger's explanation](https://www.honeybadger.io/blog/a-beginner-s-guide-to-exceptions-in-ruby/)
|
40
46
|
of why this is a good idea.
|
41
|
-
|
47
|
+
|
48
|
+
- `CivilService::Result` now has an additional attribute called `exception`, which can be used to
|
42
49
|
retrieve an exception thrown inside a `call` method.
|
data/Gemfile.lock
CHANGED
@@ -1,29 +1,26 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
civil_service (2.
|
4
|
+
civil_service (2.4.0)
|
5
5
|
activemodel (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activemodel (
|
11
|
-
activesupport (=
|
12
|
-
activesupport (
|
10
|
+
activemodel (7.0.0)
|
11
|
+
activesupport (= 7.0.0)
|
12
|
+
activesupport (7.0.0)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
|
-
i18n (>=
|
15
|
-
minitest (
|
16
|
-
tzinfo (~>
|
17
|
-
|
18
|
-
|
19
|
-
i18n (1.8.2)
|
14
|
+
i18n (>= 1.6, < 2)
|
15
|
+
minitest (>= 5.1)
|
16
|
+
tzinfo (~> 2.0)
|
17
|
+
concurrent-ruby (1.1.9)
|
18
|
+
i18n (1.8.11)
|
20
19
|
concurrent-ruby (~> 1.0)
|
21
20
|
minitest (5.11.3)
|
22
21
|
rake (13.0.1)
|
23
|
-
|
24
|
-
|
25
|
-
thread_safe (~> 0.1)
|
26
|
-
zeitwerk (2.2.0)
|
22
|
+
tzinfo (2.0.4)
|
23
|
+
concurrent-ruby (~> 1.0)
|
27
24
|
|
28
25
|
PLATFORMS
|
29
26
|
ruby
|
@@ -12,8 +12,8 @@ class CivilService::Service
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def call
|
16
|
-
|
15
|
+
def call(validate: true)
|
16
|
+
if validate && !self.class.validate_manually
|
17
17
|
return failure(errors) unless valid?
|
18
18
|
end
|
19
19
|
|
@@ -25,8 +25,8 @@ class CivilService::Service
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def call_and_raise
|
29
|
-
result = call
|
28
|
+
def call_and_raise(validate: true)
|
29
|
+
result = call(validate: validate)
|
30
30
|
if result.exception
|
31
31
|
raise result.exception, result.exception.message, result.exception.backtrace
|
32
32
|
end
|
@@ -34,12 +34,12 @@ class CivilService::Service
|
|
34
34
|
result
|
35
35
|
end
|
36
36
|
|
37
|
-
def call!
|
38
|
-
|
37
|
+
def call!(validate: true)
|
38
|
+
if validate && !self.class.validate_manually
|
39
39
|
raise CivilService::ServiceFailure.new(self, failure(errors)) unless valid?
|
40
40
|
end
|
41
41
|
|
42
|
-
result = call_and_raise
|
42
|
+
result = call_and_raise(validate: false) # we already just did the validation step if needed
|
43
43
|
raise CivilService::ServiceFailure.new(self, result) if result.failure?
|
44
44
|
result
|
45
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: civil_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nat Budin
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -96,7 +96,7 @@ files:
|
|
96
96
|
homepage: https://github.com/neinteractiveliterature/civil_service
|
97
97
|
licenses: []
|
98
98
|
metadata: {}
|
99
|
-
post_install_message:
|
99
|
+
post_install_message:
|
100
100
|
rdoc_options: []
|
101
101
|
require_paths:
|
102
102
|
- lib
|
@@ -111,8 +111,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|
114
|
-
rubygems_version: 3.
|
115
|
-
signing_key:
|
114
|
+
rubygems_version: 3.1.6
|
115
|
+
signing_key:
|
116
116
|
specification_version: 4
|
117
117
|
summary: A tiny service object framework for Rails apps
|
118
118
|
test_files: []
|