activeinteractor 0.1.4 → 0.1.5
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 +23 -1
- data/README.md +5 -5
- data/lib/active_interactor/context/attributes.rb +0 -5
- data/lib/active_interactor/context/errors.rb +2 -0
- data/lib/active_interactor/context.rb +5 -5
- data/lib/active_interactor/error.rb +31 -0
- data/lib/active_interactor/interactor/worker.rb +4 -4
- data/lib/active_interactor/interactor.rb +1 -1
- data/lib/active_interactor/version.rb +1 -1
- data/lib/active_interactor.rb +4 -0
- metadata +13 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8990e7455e8d135a08b562e71a81bc6ca0e14b4b98f25505d73c6b02e2638466
|
4
|
+
data.tar.gz: cf16acdae03eb8a3d15808fd4a01a112143878e502c20dd3a9d4dfc6396ebc09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed677499ed9140e3dffedcee26f77f3b2967b51d24b7eabf594cacbfb1bf0f3a1bb9bd76f6a94a1a5d0ac61dd190380871391b76fc1afa29f65ae44fa57c1a75
|
7
|
+
data.tar.gz: 874df56e5d15a5bcdda48c4297c5b5b64feed016d9c0ea84ac450b907569d49f8298e1b1d49929cac7e949522c31f94ef7a5f64426b5ad4ffbc70e1a2ccddb14
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning].
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [v0.1.5] - 2019-06-30
|
11
|
+
|
12
|
+
### Added
|
13
|
+
|
14
|
+
- [#39] `ActiveInteractor::Error` module
|
15
|
+
|
16
|
+
### Deprecated
|
17
|
+
|
18
|
+
- [#39] `ActiveInteractor::Context::Failure` in favor of `ActiveInteractor::Error::ContextFailure`
|
19
|
+
|
20
|
+
### Security
|
21
|
+
|
22
|
+
- [#33], [#37] Update rubocop: 0.67.2 → 0.72.0 (major)
|
23
|
+
- [#34] Various dependency updates
|
24
|
+
- [#38] Update yard: 0.9.19 → 0.9.20 (minor)
|
25
|
+
|
10
26
|
## [v0.1.4] - 2019-04-12
|
11
27
|
|
12
28
|
### Added
|
@@ -41,7 +57,8 @@ and this project adheres to [Semantic Versioning].
|
|
41
57
|
|
42
58
|
<!-- versions -->
|
43
59
|
|
44
|
-
[Unreleased]: https://github.com/aaronmallen/activeinteractor/compare/v0.1.
|
60
|
+
[Unreleased]: https://github.com/aaronmallen/activeinteractor/compare/v0.1.5..HEAD
|
61
|
+
[v0.1.5]: https://github.com/aaronmallen/activeinteractor/compare/v0.1.4...v0.1.5
|
45
62
|
[v0.1.4]: https://github.com/aaronmallen/activeinteractor/compare/v0.1.3...v0.1.4
|
46
63
|
[v0.1.3]: https://github.com/aaronmallen/activeinteractor/compare/v0.1.2...v0.1.3
|
47
64
|
[v0.1.2]: https://github.com/aaronmallen/activeinteractor/compare/v0.1.1...v0.1.2
|
@@ -54,3 +71,8 @@ and this project adheres to [Semantic Versioning].
|
|
54
71
|
[#22]: https://github.com/aaronmallen/activeinteractor/pull/22
|
55
72
|
[#25]: https://github.com/aaronmallen/activeinteractor/pull/25
|
56
73
|
[#28]: https://github.com/aaronmallen/activeinteractor/pull/28
|
74
|
+
[#33]: https://github.com/aaronmallen/activeinteractor/pull/33
|
75
|
+
[#34]: https://github.com/aaronmallen/activeinteractor/pull/34
|
76
|
+
[#37]: https://github.com/aaronmallen/activeinteractor/pull/37
|
77
|
+
[#38]: https://github.com/aaronmallen/activeinteractor/pull/38
|
78
|
+
[#39]: https://github.com/aaronmallen/activeinteractor/pull/39
|
data/README.md
CHANGED
@@ -124,7 +124,7 @@ context.success? # => false
|
|
124
124
|
|
125
125
|
#### Dealing with Failure
|
126
126
|
|
127
|
-
`context.fail!` always throws an exception of type `ActiveInteractor::
|
127
|
+
`context.fail!` always throws an exception of type `ActiveInteractor::Error::ContextFailure`.
|
128
128
|
|
129
129
|
Normally, however, these exceptions are not seen. In the recommended usage, the consuming
|
130
130
|
object invokes the interactor using the class method call, then checks the `success?` method of
|
@@ -180,7 +180,7 @@ context.occupation #=> nil
|
|
180
180
|
|
181
181
|
#### Aliasing Attributes
|
182
182
|
|
183
|
-
|
183
|
+
Sometimes you may want to use the same interactor functionality with different
|
184
184
|
model types having different naming conventions for similar attributes. We can
|
185
185
|
inform the interactors context of these aliases with the `context_attribute_aliases`
|
186
186
|
method on our interactors.
|
@@ -192,7 +192,7 @@ class MyInteractor < ActiveInteractor::Base
|
|
192
192
|
end
|
193
193
|
|
194
194
|
context = MyInteractor.perform(first_name: 'Aaron', sir_name: 'Allen')
|
195
|
-
# => <#MyInteractor::Context first_name='Aaron', last_name='Allen'
|
195
|
+
# => <#MyInteractor::Context first_name='Aaron', last_name='Allen'>
|
196
196
|
```
|
197
197
|
|
198
198
|
We can also pass an array of aliases to the attribute like this:
|
@@ -204,10 +204,10 @@ class MyInteractor < ActiveInteractor::Base
|
|
204
204
|
end
|
205
205
|
|
206
206
|
context = MyInteractor.perform(first_name: 'Aaron', sir_name: 'Allen')
|
207
|
-
# => <#MyInteractor::Context first_name='Aaron', last_name='Allen'
|
207
|
+
# => <#MyInteractor::Context first_name='Aaron', last_name='Allen'>
|
208
208
|
|
209
209
|
context = MyInteractor.perform(first_name: 'Aaron', sirname: 'Allen')
|
210
|
-
# => <#MyInteractor::Context first_name='Aaron', last_name='Allen'
|
210
|
+
# => <#MyInteractor::Context first_name='Aaron', last_name='Allen'>
|
211
211
|
```
|
212
212
|
|
213
213
|
#### Validating the Context
|
@@ -4,11 +4,6 @@ require 'active_support/core_ext/array/wrap'
|
|
4
4
|
require 'active_support/core_ext/class/attribute'
|
5
5
|
|
6
6
|
module ActiveInteractor
|
7
|
-
# ActiveInteractor::Context module
|
8
|
-
#
|
9
|
-
# @author Aaron Allen <hello@aaronmallen.me>
|
10
|
-
# @since 0.0.1
|
11
|
-
# @version 0.1
|
12
7
|
module Context
|
13
8
|
# Provides Context Attribute methods to included classes
|
14
9
|
#
|
@@ -49,15 +49,15 @@ module ActiveInteractor
|
|
49
49
|
# #=> <#MyInteractor name='Aaron'>
|
50
50
|
#
|
51
51
|
# interactor.context.fail!
|
52
|
-
# #=> ActiveInteractor::
|
52
|
+
# #=> ActiveInteractor::Error::ContextFailure: <#MyInteractor::Context name='Aaron'>
|
53
53
|
#
|
54
54
|
# @param errors [ActiveModel::Errors, Hash] errors to add to the context on failure
|
55
55
|
# @see https://api.rubyonrails.org/classes/ActiveModel/Errors.html ActiveModel::Errors
|
56
|
-
# @raise [
|
56
|
+
# @raise [Error::ContextFailure]
|
57
57
|
def fail!(errors = {})
|
58
58
|
self.errors.merge!(errors) unless errors.empty?
|
59
59
|
@_failed = true
|
60
|
-
raise
|
60
|
+
raise Error::ContextFailure, self
|
61
61
|
end
|
62
62
|
|
63
63
|
# Whether the context instance has failed. By default, a new
|
@@ -73,7 +73,7 @@ module ActiveInteractor
|
|
73
73
|
# false
|
74
74
|
#
|
75
75
|
# context.fail!
|
76
|
-
# #=> ActiveInteractor::
|
76
|
+
# #=> ActiveInteractor::Error::ContextFailure: <#MyInteractor::Context>
|
77
77
|
#
|
78
78
|
# context.failure?
|
79
79
|
# #=> true
|
@@ -138,7 +138,7 @@ module ActiveInteractor
|
|
138
138
|
# true
|
139
139
|
#
|
140
140
|
# context.fail!
|
141
|
-
# #=> ActiveInteractor::
|
141
|
+
# #=> ActiveInteractor::Error::ContextFailure: <#MyInteractor::Context>
|
142
142
|
#
|
143
143
|
# context.success?
|
144
144
|
# #=> false
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveInteractor
|
4
|
+
# ActiveInteractor::Error module
|
5
|
+
#
|
6
|
+
# @author Aaron Allen <hello@aaronmallen.me>
|
7
|
+
# @since 0.1.5
|
8
|
+
# @version 0.1
|
9
|
+
module Error
|
10
|
+
# Raised when an interactor context fails
|
11
|
+
#
|
12
|
+
# @author Aaron Allen <hello@aaronmallen.me>
|
13
|
+
# @since 0.1.5
|
14
|
+
# @version 0.1
|
15
|
+
#
|
16
|
+
# @!attribute [r] context
|
17
|
+
# @return [Base] an instance of {Base}
|
18
|
+
class ContextFailure < StandardError
|
19
|
+
attr_reader :context
|
20
|
+
|
21
|
+
# A new instance of {ContextFailure}
|
22
|
+
# @param context [ActiveInteractor::Context::Base] an
|
23
|
+
# instance of {ActiveInteractor::Context::Base}
|
24
|
+
# @return [ContextFailure] a new instance of {ContextFailure}
|
25
|
+
def initialize(context = nil)
|
26
|
+
@context = context
|
27
|
+
super
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -18,17 +18,17 @@ module ActiveInteractor
|
|
18
18
|
@interactor = clone_interactor(interactor)
|
19
19
|
end
|
20
20
|
|
21
|
-
# Calls {#execute_perform!} and rescues {ActiveInteractor::
|
21
|
+
# Calls {#execute_perform!} and rescues {ActiveInteractor::Error::ContextFailure}
|
22
22
|
# @return [ActiveInteractor::Context::Base] an instance of {ActiveInteractor::Context::Base}
|
23
23
|
def execute_perform
|
24
24
|
execute_perform!
|
25
|
-
rescue ActiveInteractor::
|
26
|
-
ActiveInteractor.logger.error("ActiveInteractor: #{
|
25
|
+
rescue ActiveInteractor::Error::ContextFailure => e
|
26
|
+
ActiveInteractor.logger.error("ActiveInteractor: #{e}")
|
27
27
|
context
|
28
28
|
end
|
29
29
|
|
30
30
|
# Calls {Interactor#perform} with callbacks and context validation
|
31
|
-
# @raise [ActiveInteractor::
|
31
|
+
# @raise [ActiveInteractor::Error::ContextFailure] if the context fails
|
32
32
|
# @return [ActiveInteractor::Context::Base] an instance of {ActiveInteractor::Context::Base}
|
33
33
|
def execute_perform!
|
34
34
|
run_callbacks :perform do
|
@@ -36,7 +36,7 @@ module ActiveInteractor
|
|
36
36
|
|
37
37
|
# Invoke an Interactor. The {.perform!} method behaves identically to
|
38
38
|
# the {.perform} method with one notable exception. If the context is failed
|
39
|
-
# during invocation of the interactor, the {ActiveInteractor::
|
39
|
+
# during invocation of the interactor, the {ActiveInteractor::Error::ContextFailure}
|
40
40
|
# is raised.
|
41
41
|
#
|
42
42
|
# @example Run an interactor
|
data/lib/active_interactor.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeinteractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Allen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -56,14 +56,14 @@ dependencies:
|
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '
|
59
|
+
version: '2.0'
|
60
60
|
type: :development
|
61
61
|
prerelease: false
|
62
62
|
version_requirements: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
66
|
+
version: '2.0'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: github-markup
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,14 +98,14 @@ dependencies:
|
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
101
|
+
version: '12.3'
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
requirements:
|
106
106
|
- - "~>"
|
107
107
|
- !ruby/object:Gem::Version
|
108
|
-
version: '
|
108
|
+
version: '12.3'
|
109
109
|
- !ruby/object:Gem::Dependency
|
110
110
|
name: redcarpet
|
111
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,14 +154,14 @@ dependencies:
|
|
154
154
|
requirements:
|
155
155
|
- - "~>"
|
156
156
|
- !ruby/object:Gem::Version
|
157
|
-
version: '0.
|
157
|
+
version: '0.67'
|
158
158
|
type: :development
|
159
159
|
prerelease: false
|
160
160
|
version_requirements: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
162
|
- - "~>"
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version: '0.
|
164
|
+
version: '0.67'
|
165
165
|
- !ruby/object:Gem::Dependency
|
166
166
|
name: simplecov
|
167
167
|
requirement: !ruby/object:Gem::Requirement
|
@@ -222,6 +222,7 @@ files:
|
|
222
222
|
- lib/active_interactor/context.rb
|
223
223
|
- lib/active_interactor/context/attributes.rb
|
224
224
|
- lib/active_interactor/context/errors.rb
|
225
|
+
- lib/active_interactor/error.rb
|
225
226
|
- lib/active_interactor/interactor.rb
|
226
227
|
- lib/active_interactor/interactor/callbacks.rb
|
227
228
|
- lib/active_interactor/interactor/context.rb
|
@@ -246,10 +247,10 @@ licenses:
|
|
246
247
|
- MIT
|
247
248
|
metadata:
|
248
249
|
bug_tracker_uri: https://github.com/aaronmallen/activeinteractor/issues
|
249
|
-
changelog_uri: https://github.com/aaronmallen/activeinteractor/blob/v0.1.
|
250
|
-
documentation_uri: https://www.rubydoc.info/gems/activeinteractor/0.1.
|
250
|
+
changelog_uri: https://github.com/aaronmallen/activeinteractor/blob/v0.1.5/CHANGELOG.md
|
251
|
+
documentation_uri: https://www.rubydoc.info/gems/activeinteractor/0.1.5
|
251
252
|
hompage_uri: https://github.com/aaronmallen/activeinteractor
|
252
|
-
source_code_uri: https://github.com/aaronmallen/activeinteractor/tree/v0.1.
|
253
|
+
source_code_uri: https://github.com/aaronmallen/activeinteractor/tree/v0.1.5
|
253
254
|
wiki_uri: https://github.com/aaronmallen/activeinteractor/wiki
|
254
255
|
post_install_message:
|
255
256
|
rdoc_options: []
|
@@ -266,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
267
|
- !ruby/object:Gem::Version
|
267
268
|
version: '0'
|
268
269
|
requirements: []
|
269
|
-
rubygems_version: 3.0.
|
270
|
+
rubygems_version: 3.0.4
|
270
271
|
signing_key:
|
271
272
|
specification_version: 4
|
272
273
|
summary: Ruby interactors with ActiveModel::Validations
|