activeinteractor 1.2.2 → 2.0.0.alpha.1.0.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 +1 -1
- data/LICENSE +1 -1
- data/README.md +4 -64
- data/lib/active_interactor/base.rb +77 -29
- data/lib/active_interactor/errors.rb +12 -0
- data/lib/active_interactor/result.rb +73 -0
- data/lib/active_interactor.rb +3 -101
- data/sig/active_interactor.rbs +3 -0
- metadata +23 -86
- data/.yardopts +0 -12
- data/lib/active_interactor/config.rb +0 -60
- data/lib/active_interactor/configurable.rb +0 -53
- data/lib/active_interactor/context/attributes.rb +0 -179
- data/lib/active_interactor/context/base.rb +0 -333
- data/lib/active_interactor/context/errors.rb +0 -57
- data/lib/active_interactor/context/loader.rb +0 -50
- data/lib/active_interactor/context/status.rb +0 -106
- data/lib/active_interactor/error.rb +0 -46
- data/lib/active_interactor/interactor/callbacks.rb +0 -293
- data/lib/active_interactor/interactor/context.rb +0 -378
- data/lib/active_interactor/interactor/perform.rb +0 -260
- data/lib/active_interactor/interactor/worker.rb +0 -120
- data/lib/active_interactor/models.rb +0 -50
- data/lib/active_interactor/organizer/base.rb +0 -18
- data/lib/active_interactor/organizer/callbacks.rb +0 -275
- data/lib/active_interactor/organizer/interactor_interface.rb +0 -127
- data/lib/active_interactor/organizer/interactor_interface_collection.rb +0 -62
- data/lib/active_interactor/organizer/organize.rb +0 -67
- data/lib/active_interactor/organizer/perform.rb +0 -112
- data/lib/active_interactor/rails/orm/active_record.rb +0 -5
- data/lib/active_interactor/rails/orm/dynamoid.rb +0 -5
- data/lib/active_interactor/rails/orm/mongoid.rb +0 -5
- data/lib/active_interactor/rails/railtie.rb +0 -21
- data/lib/active_interactor/rails.rb +0 -4
- data/lib/active_interactor/version.rb +0 -45
- data/lib/rails/generators/active_interactor/application_context_generator.rb +0 -21
- data/lib/rails/generators/active_interactor/application_interactor_generator.rb +0 -21
- data/lib/rails/generators/active_interactor/application_organizer_generator.rb +0 -21
- data/lib/rails/generators/active_interactor/base.rb +0 -29
- data/lib/rails/generators/active_interactor/generator.rb +0 -21
- data/lib/rails/generators/active_interactor/install_generator.rb +0 -16
- data/lib/rails/generators/active_interactor.rb +0 -5
- data/lib/rails/generators/interactor/context/rspec_generator.rb +0 -17
- data/lib/rails/generators/interactor/context/test_unit_generator.rb +0 -17
- data/lib/rails/generators/interactor/context_generator.rb +0 -22
- data/lib/rails/generators/interactor/generates_context.rb +0 -28
- data/lib/rails/generators/interactor/interactor_generator.rb +0 -25
- data/lib/rails/generators/interactor/organizer_generator.rb +0 -39
- data/lib/rails/generators/interactor/rspec_generator.rb +0 -15
- data/lib/rails/generators/interactor/test_unit_generator.rb +0 -15
- data/lib/rails/generators/templates/active_interactor.erb +0 -17
- data/lib/rails/generators/templates/application_context.rb +0 -4
- data/lib/rails/generators/templates/application_interactor.rb +0 -4
- data/lib/rails/generators/templates/application_organizer.rb +0 -4
- data/lib/rails/generators/templates/context.erb +0 -7
- data/lib/rails/generators/templates/context_spec.erb +0 -7
- data/lib/rails/generators/templates/context_test_unit.erb +0 -9
- data/lib/rails/generators/templates/interactor.erb +0 -15
- data/lib/rails/generators/templates/interactor_spec.erb +0 -7
- data/lib/rails/generators/templates/interactor_test_unit.erb +0 -9
- data/lib/rails/generators/templates/organizer.erb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b84d76be97bd543c4583c588b6f7dae50424c640fa675b7a4fb154bc8bdb1051
|
4
|
+
data.tar.gz: c0846db96ac34ed824b79118395afea967e528f4b8eb797eb7411c156ddb5d55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ce8f776d073318c6bfdc47e6d822febde4570aa4777eab9ff2096bac4e8162a5849e01b929f8ed4e33f04b45edeca018e9a7381e651a3ec1556b68826c2e891
|
7
|
+
data.tar.gz: 822f52d219f12aaec5f373e1eed23f70568b3dd44972eda16f6a2c27f03fb1895b3566d605602448443db263765dae6e0b7a0c2e1dfdd0f61d0392c92c064977
|
data/CHANGELOG.md
CHANGED
@@ -276,7 +276,7 @@ and this project adheres to [Semantic Versioning].
|
|
276
276
|
|
277
277
|
<!-- versions -->
|
278
278
|
|
279
|
-
[Unreleased]: https://github.com/aaronmallen/activeinteractor/compare/
|
279
|
+
[Unreleased]: https://github.com/aaronmallen/activeinteractor/compare/v2.0.0-alpha.1.0.0...HEAD
|
280
280
|
[v1.2.2]: https://github.com/aaronmallen/activeinteractor/compare/v1.2.1...v1.2.2
|
281
281
|
[v1.2.1]: https://github.com/aaronmallen/activeinteractor/compare/v1.2.0...v1.2.1
|
282
282
|
[v1.2.0]: https://github.com/aaronmallen/activeinteractor/compare/v1.1.7...v1.2.0
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,69 +1,9 @@
|
|
1
1
|
# ActiveInteractor
|
2
2
|
|
3
3
|
[](https://rubygems.org/gems/activeinteractor)
|
4
|
-
[](https://codeclimate.com/github/aaronmallen/activeinteractor/test_coverage)
|
7
|
-
[](https://www.rubydoc.info/gems/activeinteractor)
|
8
|
-
[](http://inch-ci.org/github/aaronmallen/activeinteractor)
|
9
|
-
[](https://github.com/aaronmallen/activeinteractor/blob/main/LICENSE)
|
4
|
+
[](https://github.com/activeinteractor/activeinteractor/actions/workflows/build.yml)
|
5
|
+
[](https://github.com/activeinteractor/activeinteractor/blob/main/LICENSE)
|
10
6
|
|
11
|
-
|
12
|
-
[interactor][collective_idea_interactors] gem. Rich support for attributes, callbacks, and validations,
|
13
|
-
and thread safe performance methods.
|
7
|
+
## DISCLAIMER
|
14
8
|
|
15
|
-
|
16
|
-
course on how to use ActiveInteractors. Read the [wiki] for detailed usage information.
|
17
|
-
|
18
|
-
## Features
|
19
|
-
|
20
|
-
* [Context validation][wiki_context_validation]
|
21
|
-
* [Callbacks][wiki_callbacks]
|
22
|
-
* Thread safe performance calls
|
23
|
-
* Organize multiple interactors [conditionally][wiki_organizers_conditionally] or in [parallel][wiki_organizers_parallel]
|
24
|
-
|
25
|
-
## Documentation
|
26
|
-
|
27
|
-
Be sure to read the [wiki] for detailed information on how to use ActiveInteractor.
|
28
|
-
|
29
|
-
For technical documentation please see the gem's [ruby docs].
|
30
|
-
|
31
|
-
## Install
|
32
|
-
|
33
|
-
Add this line to your application's Gemfile:
|
34
|
-
|
35
|
-
```ruby
|
36
|
-
gem 'activeinteractor', require: 'active_interactor'
|
37
|
-
```
|
38
|
-
|
39
|
-
Or install it yourself as:
|
40
|
-
|
41
|
-
```sh
|
42
|
-
gem install activeinteractor
|
43
|
-
```
|
44
|
-
|
45
|
-
## Contributing
|
46
|
-
|
47
|
-
Read our guidelines for [Contributing](CONTRIBUTING.md).
|
48
|
-
|
49
|
-
## Acknowledgements
|
50
|
-
|
51
|
-
ActiveInteractor is made possible by wonderful [humans].
|
52
|
-
|
53
|
-
## License
|
54
|
-
|
55
|
-
The gem is available as open source under the terms of the [MIT License][mit_license].
|
56
|
-
|
57
|
-
[ActiveModel::Validations]: https://api.rubyonrails.org/classes/ActiveModel/Validations.html
|
58
|
-
[business_logic_wikipedia]: https://en.wikipedia.org/wiki/Business_logic
|
59
|
-
[collective_idea_interactors]: https://github.com/collectiveidea/interactor
|
60
|
-
[command pattern]: https://en.wikipedia.org/wiki/Command_pattern
|
61
|
-
[humans]: https://github.com/aaronmallen/activeinteractor/tree/main/HUMANS.md
|
62
|
-
[Medium article]: https://medium.com/@aaronmallen/activeinteractor-8557c0dc78db
|
63
|
-
[mit_license]: https://opensource.org/licenses/MIT
|
64
|
-
[ruby docs]: https://www.rubydoc.info/gems/activeinteractor
|
65
|
-
[wiki]: https://github.com/aaronmallen/activeinteractor/wiki
|
66
|
-
[wiki_callbacks]: https://github.com/aaronmallen/activeinteractor/wiki/Callbacks
|
67
|
-
[wiki_context_validation]: https://github.com/aaronmallen/activeinteractor/wiki/Context#validating-the-context
|
68
|
-
[wiki_organizers_conditionally]: https://github.com/aaronmallen/activeinteractor/wiki/Interactors#organizing-interactors-conditionally
|
69
|
-
[wiki_organizers_parallel]: https://github.com/aaronmallen/activeinteractor/wiki/Interactors#running-interactors-in-parallel
|
9
|
+
This project is a work in progress. Go [here](https://github.com/aaronmallen/activeinteractor) for information on the current version of ActiveInteractor.
|
@@ -1,35 +1,83 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActiveInteractor
|
4
|
-
# The base class all {Base interactors} should inherit from.
|
5
|
-
#
|
6
|
-
# When {Base} is loaded by your application an
|
7
|
-
# {https://api.rubyonrails.org/classes/ActiveSupport/LazyLoadHooks.html ActiveSupport load hook} is called
|
8
|
-
# with `:active_interactor` and {Base}.
|
9
|
-
#
|
10
|
-
# @author Aaron Allen <hello@aaronmallen.me>
|
11
|
-
# @since 0.1.0
|
12
|
-
#
|
13
|
-
# @example a basic {Base interactor}
|
14
|
-
# class MyInteractor < ActiveInteractor::Base
|
15
|
-
# def perform
|
16
|
-
# # TODO: implement the perform method
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# def rollback
|
20
|
-
# # TODO: implement the rollback method
|
21
|
-
# end
|
22
|
-
# end
|
23
4
|
class Base
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
5
|
+
class << self
|
6
|
+
def argument(name, type, description = nil, **options)
|
7
|
+
attributes[:arguments][name.to_sym] = { name: name, type: type, description: description }.merge(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def perform(input_context = {})
|
11
|
+
new(input_context).send(:exec_perform!)
|
12
|
+
rescue Error => e
|
13
|
+
e.result
|
14
|
+
rescue StandardError => e
|
15
|
+
Result.failure(errors: e.message)
|
16
|
+
end
|
17
|
+
|
18
|
+
def returns(name, type, description = nil, **options)
|
19
|
+
attributes[:fields][name.to_sym] = { name: name, type: type, description: description }.merge(options)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def attributes
|
25
|
+
@attributes ||= { arguments: {}, fields: {} }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(input = {})
|
30
|
+
@input = input.freeze
|
31
|
+
@context = parse_input!
|
32
|
+
end
|
33
|
+
|
34
|
+
def perform; end
|
35
|
+
def rollback; end
|
36
|
+
|
37
|
+
protected
|
38
|
+
|
39
|
+
attr_accessor :context
|
40
|
+
|
41
|
+
def exec_perform!
|
42
|
+
perform
|
43
|
+
Result.success(data: parse_output!)
|
44
|
+
end
|
33
45
|
|
34
|
-
|
46
|
+
def fail!(errors = {})
|
47
|
+
rollback
|
48
|
+
raise Error, Result.failure(data: context, errors: errors)
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse_input!
|
52
|
+
errors = {}
|
53
|
+
context = self.class.send(:attributes)[:arguments].each_with_object({}) do |(name, options), hash|
|
54
|
+
errors = validate_attribute_value(@input[name], name, options, errors)
|
55
|
+
hash[name] = @input[name] || options[:default]
|
56
|
+
end
|
57
|
+
|
58
|
+
raise Error, Result.failure(errors: errors, status: Result::STATUS[:failed_on_input]) unless errors.empty?
|
59
|
+
|
60
|
+
context
|
61
|
+
end
|
62
|
+
|
63
|
+
def parse_output!
|
64
|
+
errors = {}
|
65
|
+
context = self.class.send(:attributes)[:fields].each_with_object({}) do |(name, options), hash|
|
66
|
+
errors = validate_attribute_value(self.context[name], name, options, errors)
|
67
|
+
hash[name] = self.context[name] || options[:default]
|
68
|
+
end
|
69
|
+
|
70
|
+
raise Error, Result.failure(errors: errors, status: Result::STATUS[:failed_on_output]) unless errors.empty?
|
71
|
+
|
72
|
+
context
|
73
|
+
end
|
74
|
+
|
75
|
+
def validate_attribute_value(value, attribute_name, attribute_options, errors)
|
76
|
+
return errors unless value.blank? && attribute_options[:required] && !attribute_options[:default]
|
77
|
+
|
78
|
+
errors[attribute_name] ||= []
|
79
|
+
errors[attribute_name] << :blank
|
80
|
+
errors
|
81
|
+
end
|
82
|
+
end
|
35
83
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveInteractor
|
4
|
+
class Result
|
5
|
+
extend ActiveModel::Naming
|
6
|
+
|
7
|
+
STATUS = {
|
8
|
+
success: 0,
|
9
|
+
failed_at_input: 1,
|
10
|
+
failed_at_runtime: 2,
|
11
|
+
failed_at_output: 3
|
12
|
+
}.freeze
|
13
|
+
|
14
|
+
attr_reader :data, :errors
|
15
|
+
|
16
|
+
class << self
|
17
|
+
def success(data: {})
|
18
|
+
new(status: STATUS[:success], data: data)
|
19
|
+
end
|
20
|
+
|
21
|
+
def failure(data: {}, errors: {}, status: STATUS[:failed_at_runtime])
|
22
|
+
result = new(status: status, data: data)
|
23
|
+
parse_errors(errors).each_pair do |attribute, messages|
|
24
|
+
Array.wrap(messages).each { |message| result.errors.add(attribute, message) }
|
25
|
+
end
|
26
|
+
result
|
27
|
+
end
|
28
|
+
|
29
|
+
def human_attribute_name(attribute, _options = {})
|
30
|
+
attribute.respond_to?(:to_s) ? attribute.to_s.humanize : attribute
|
31
|
+
end
|
32
|
+
|
33
|
+
def lookup_ancestors
|
34
|
+
[self]
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def parse_errors(errors)
|
40
|
+
case errors
|
41
|
+
when String
|
42
|
+
{ generic: [errors] }
|
43
|
+
when ActiveModel::Errors
|
44
|
+
errors.as_json
|
45
|
+
else
|
46
|
+
errors
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private_class_method :new
|
52
|
+
|
53
|
+
def initialize(status:, data: {})
|
54
|
+
@status = status
|
55
|
+
@data = data
|
56
|
+
@errors = ActiveModel::Errors.new(self)
|
57
|
+
end
|
58
|
+
|
59
|
+
def failure?
|
60
|
+
!success?
|
61
|
+
end
|
62
|
+
alias failed? failure?
|
63
|
+
|
64
|
+
def read_attribute_for_validation(attribute_name)
|
65
|
+
data[attribute_name]
|
66
|
+
end
|
67
|
+
|
68
|
+
def success?
|
69
|
+
@status == STATUS[:success]
|
70
|
+
end
|
71
|
+
alias successful? success?
|
72
|
+
end
|
73
|
+
end
|
data/lib/active_interactor.rb
CHANGED
@@ -1,111 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'active_model'
|
4
|
-
require 'active_support
|
5
|
-
require 'active_support/core_ext/array/extract_options'
|
6
|
-
require 'active_support/core_ext/class/attribute'
|
7
|
-
require 'active_support/core_ext/string/inflections'
|
8
|
-
require 'active_support/dependencies/autoload'
|
9
|
-
require 'logger'
|
10
|
-
require 'ostruct'
|
4
|
+
require 'active_support'
|
11
5
|
|
12
|
-
|
13
|
-
require 'active_interactor/config'
|
14
|
-
require 'active_interactor/version'
|
6
|
+
require_relative 'active_interactor/errors'
|
15
7
|
|
16
|
-
# An {Base interactor} is a simple, single-purpose service object. {Base Interactors} can be used to reduce the
|
17
|
-
# responsibility of your controllers, workers, and models and encapsulate your application's
|
18
|
-
# {https://en.wikipedia.org/wiki/Business_logic business logic}. Each {Base interactor} represents one thing that your
|
19
|
-
# application does.
|
20
|
-
#
|
21
|
-
# Each {Base interactor} has it's own immutable {Context::Base context} which contains everything the
|
22
|
-
# {Base interactor} needs to do its work. When an {Base interactor} does its single purpose, it affects its given
|
23
|
-
# {Context::Base context}.
|
24
|
-
#
|
25
|
-
# @see https://medium.com/@aaronmallen/activeinteractor-8557c0dc78db Basic Usage
|
26
|
-
# @see https://github.com/aaronmallen/activeinteractor/wiki Advanced Usage
|
27
|
-
# @see https://github.com/aaronmallen/activeinteractor Source Code
|
28
|
-
# @see https://github.com/aaronmallen/activeinteractor/issues Issues
|
29
|
-
#
|
30
|
-
# ## License
|
31
|
-
#
|
32
|
-
# Copyright (c) 2019 Aaron Allen
|
33
|
-
#
|
34
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
35
|
-
# of this software and associated documentation files (the "Software"), to deal
|
36
|
-
# in the Software without restriction, including without limitation the rights
|
37
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
38
|
-
# copies of the Software, and to permit persons to whom the Software is
|
39
|
-
# furnished to do so, subject to the following conditions:
|
40
|
-
#
|
41
|
-
# The above copyright notice and this permission notice shall be included in
|
42
|
-
# all copies or substantial portions of the Software.
|
43
|
-
#
|
44
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
45
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
46
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
47
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
48
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
49
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
50
|
-
# THE SOFTWARE.
|
51
8
|
module ActiveInteractor
|
52
9
|
extend ActiveSupport::Autoload
|
53
10
|
|
54
11
|
autoload :Base
|
55
|
-
|
56
|
-
# {Context::Base Context} classes and modules
|
57
|
-
#
|
58
|
-
# @see https://github.com/aaronmallen/activeinteractor/wiki/Context Context
|
59
|
-
#
|
60
|
-
# @author Aaron Allen <hello@aaronmallen.me>
|
61
|
-
# @since 0.1.0
|
62
|
-
module Context
|
63
|
-
extend ActiveSupport::Autoload
|
64
|
-
|
65
|
-
autoload :Attributes
|
66
|
-
autoload :Base
|
67
|
-
autoload :Errors
|
68
|
-
autoload :Loader
|
69
|
-
autoload :Status
|
70
|
-
end
|
71
|
-
|
72
|
-
# {Base Interactor} classes and modules
|
73
|
-
#
|
74
|
-
# @see https://github.com/aaronmallen/activeinteractor/wiki/Interactors Interactors
|
75
|
-
#
|
76
|
-
# @author Aaron Allen <hello@aaronmallen.me>
|
77
|
-
# @since 0.1.0
|
78
|
-
module Interactor
|
79
|
-
extend ActiveSupport::Autoload
|
80
|
-
|
81
|
-
autoload :Callbacks
|
82
|
-
autoload :Context
|
83
|
-
autoload :Perform
|
84
|
-
autoload :Worker
|
85
|
-
end
|
86
|
-
|
87
|
-
autoload :Models
|
88
|
-
|
89
|
-
# {Organizer::Base Organizer} classes and modules
|
90
|
-
#
|
91
|
-
# @see https://github.com/aaronmallen/activeinteractor/wiki/Interactors#organizers Organizers
|
92
|
-
#
|
93
|
-
# @author Aaron Allen <hello@aaronmallen.me>
|
94
|
-
# @since 0.1.0
|
95
|
-
module Organizer
|
96
|
-
extend ActiveSupport::Autoload
|
97
|
-
|
98
|
-
autoload :Base
|
99
|
-
autoload :Callbacks
|
100
|
-
autoload :InteractorInterface
|
101
|
-
autoload :InteractorInterfaceCollection
|
102
|
-
autoload :Organize
|
103
|
-
autoload :Perform
|
104
|
-
end
|
105
|
-
|
106
|
-
eager_autoload do
|
107
|
-
autoload :Error
|
108
|
-
end
|
12
|
+
autoload :Result
|
109
13
|
end
|
110
|
-
|
111
|
-
require 'active_interactor/rails' if defined?(::Rails)
|
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: 1.
|
4
|
+
version: 2.0.0.alpha.1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Allen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.1'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '8'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '6.1'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '8'
|
@@ -36,7 +36,7 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '6.1'
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '8'
|
@@ -46,24 +46,10 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '6.1'
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '8'
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: bundler
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '2.3'
|
60
|
-
type: :development
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '2.3'
|
67
53
|
description: |
|
68
54
|
An implementation of the Command Pattern for Ruby with ActiveModel::Validations inspired by the interactor gem.
|
69
55
|
Rich support for attributes, callbacks, and validations, and thread safe performance methods.
|
@@ -73,74 +59,25 @@ executables: []
|
|
73
59
|
extensions: []
|
74
60
|
extra_rdoc_files: []
|
75
61
|
files:
|
76
|
-
- ".yardopts"
|
77
62
|
- CHANGELOG.md
|
78
63
|
- LICENSE
|
79
64
|
- README.md
|
80
65
|
- lib/active_interactor.rb
|
81
66
|
- lib/active_interactor/base.rb
|
82
|
-
- lib/active_interactor/
|
83
|
-
- lib/active_interactor/
|
84
|
-
-
|
85
|
-
|
86
|
-
- lib/active_interactor/context/errors.rb
|
87
|
-
- lib/active_interactor/context/loader.rb
|
88
|
-
- lib/active_interactor/context/status.rb
|
89
|
-
- lib/active_interactor/error.rb
|
90
|
-
- lib/active_interactor/interactor/callbacks.rb
|
91
|
-
- lib/active_interactor/interactor/context.rb
|
92
|
-
- lib/active_interactor/interactor/perform.rb
|
93
|
-
- lib/active_interactor/interactor/worker.rb
|
94
|
-
- lib/active_interactor/models.rb
|
95
|
-
- lib/active_interactor/organizer/base.rb
|
96
|
-
- lib/active_interactor/organizer/callbacks.rb
|
97
|
-
- lib/active_interactor/organizer/interactor_interface.rb
|
98
|
-
- lib/active_interactor/organizer/interactor_interface_collection.rb
|
99
|
-
- lib/active_interactor/organizer/organize.rb
|
100
|
-
- lib/active_interactor/organizer/perform.rb
|
101
|
-
- lib/active_interactor/rails.rb
|
102
|
-
- lib/active_interactor/rails/orm/active_record.rb
|
103
|
-
- lib/active_interactor/rails/orm/dynamoid.rb
|
104
|
-
- lib/active_interactor/rails/orm/mongoid.rb
|
105
|
-
- lib/active_interactor/rails/railtie.rb
|
106
|
-
- lib/active_interactor/version.rb
|
107
|
-
- lib/rails/generators/active_interactor.rb
|
108
|
-
- lib/rails/generators/active_interactor/application_context_generator.rb
|
109
|
-
- lib/rails/generators/active_interactor/application_interactor_generator.rb
|
110
|
-
- lib/rails/generators/active_interactor/application_organizer_generator.rb
|
111
|
-
- lib/rails/generators/active_interactor/base.rb
|
112
|
-
- lib/rails/generators/active_interactor/generator.rb
|
113
|
-
- lib/rails/generators/active_interactor/install_generator.rb
|
114
|
-
- lib/rails/generators/interactor/context/rspec_generator.rb
|
115
|
-
- lib/rails/generators/interactor/context/test_unit_generator.rb
|
116
|
-
- lib/rails/generators/interactor/context_generator.rb
|
117
|
-
- lib/rails/generators/interactor/generates_context.rb
|
118
|
-
- lib/rails/generators/interactor/interactor_generator.rb
|
119
|
-
- lib/rails/generators/interactor/organizer_generator.rb
|
120
|
-
- lib/rails/generators/interactor/rspec_generator.rb
|
121
|
-
- lib/rails/generators/interactor/test_unit_generator.rb
|
122
|
-
- lib/rails/generators/templates/active_interactor.erb
|
123
|
-
- lib/rails/generators/templates/application_context.rb
|
124
|
-
- lib/rails/generators/templates/application_interactor.rb
|
125
|
-
- lib/rails/generators/templates/application_organizer.rb
|
126
|
-
- lib/rails/generators/templates/context.erb
|
127
|
-
- lib/rails/generators/templates/context_spec.erb
|
128
|
-
- lib/rails/generators/templates/context_test_unit.erb
|
129
|
-
- lib/rails/generators/templates/interactor.erb
|
130
|
-
- lib/rails/generators/templates/interactor_spec.erb
|
131
|
-
- lib/rails/generators/templates/interactor_test_unit.erb
|
132
|
-
- lib/rails/generators/templates/organizer.erb
|
133
|
-
homepage: https://github.com/aaronmallen/activeinteractor
|
67
|
+
- lib/active_interactor/errors.rb
|
68
|
+
- lib/active_interactor/result.rb
|
69
|
+
- sig/active_interactor.rbs
|
70
|
+
homepage: https://github.com/activeinteractor/activeinteractor
|
134
71
|
licenses:
|
135
72
|
- MIT
|
136
73
|
metadata:
|
137
|
-
bug_tracker_uri: https://github.com/
|
138
|
-
changelog_uri: https://github.com/
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
post_install_message:
|
74
|
+
bug_tracker_uri: https://github.com/activeinteractor/activeinteractor/issues
|
75
|
+
changelog_uri: https://github.com/activeinteractor/activeinteractor/blob/v2.0.0-alpha.1.0.0/CHANGELOG.md
|
76
|
+
homepage_uri: https://github.com/activeinteractor/activeinteractor
|
77
|
+
source_code_uri: https://github.com/activeinteractor/activeinteractor/tree/v2.0.0-alpha.1.0.0
|
78
|
+
wiki_uri: https://github.com/activeinteractor/activeinteractor/wiki
|
79
|
+
rubygems_mfa_required: 'true'
|
80
|
+
post_install_message:
|
144
81
|
rdoc_options: []
|
145
82
|
require_paths:
|
146
83
|
- lib
|
@@ -148,15 +85,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
148
85
|
requirements:
|
149
86
|
- - ">="
|
150
87
|
- !ruby/object:Gem::Version
|
151
|
-
version:
|
88
|
+
version: '3.0'
|
152
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
90
|
requirements:
|
154
|
-
- - "
|
91
|
+
- - ">"
|
155
92
|
- !ruby/object:Gem::Version
|
156
|
-
version:
|
93
|
+
version: 1.3.1
|
157
94
|
requirements: []
|
158
|
-
rubygems_version: 3.
|
159
|
-
signing_key:
|
95
|
+
rubygems_version: 3.4.19
|
96
|
+
signing_key:
|
160
97
|
specification_version: 4
|
161
98
|
summary: Ruby interactors with ActiveModel::Validations
|
162
99
|
test_files: []
|
data/.yardopts
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ActiveInteractor
|
4
|
-
# The ActiveInteractor configuration object
|
5
|
-
#
|
6
|
-
# @author Aaron Allen <hello@aaronmallen.me>
|
7
|
-
# @since 1.0.0
|
8
|
-
#
|
9
|
-
# @!attribute [rw] logger
|
10
|
-
# The logger instance to use for logging.
|
11
|
-
#
|
12
|
-
# @since 1.0.0
|
13
|
-
#
|
14
|
-
# @return [Class] an instance of Logger.
|
15
|
-
#
|
16
|
-
# @!method initialize(options = {})
|
17
|
-
# Initialize a new instance of {Config}
|
18
|
-
#
|
19
|
-
# @since 1.0.0
|
20
|
-
#
|
21
|
-
# @param options [Hash{Symbol=>*}] the attributes to assign to {Config}
|
22
|
-
# @option options [Class] :logger (Logger.new(STDOUT)) the {Config#logger} attribute
|
23
|
-
# @return [Config] a new instance of {Config}
|
24
|
-
class Config
|
25
|
-
include ActiveInteractor::Configurable
|
26
|
-
defaults logger: Logger.new($stdout)
|
27
|
-
end
|
28
|
-
|
29
|
-
# The ActiveInteractor configuration
|
30
|
-
#
|
31
|
-
# @since 0.1.0
|
32
|
-
#
|
33
|
-
# @return [Config] a {Config} instance
|
34
|
-
def self.config
|
35
|
-
@config ||= ActiveInteractor::Config.new
|
36
|
-
end
|
37
|
-
|
38
|
-
# Configure the ActiveInteractor gem
|
39
|
-
#
|
40
|
-
# @since 0.1.0
|
41
|
-
#
|
42
|
-
# @example Configure ActiveInteractor
|
43
|
-
# require 'active_interactor'
|
44
|
-
# ActiveInteractor.configure do |config|
|
45
|
-
# config.logger = ::Rails.logger
|
46
|
-
# end
|
47
|
-
# @yield [#config]
|
48
|
-
def self.configure
|
49
|
-
yield config
|
50
|
-
end
|
51
|
-
|
52
|
-
# The logger instance to use for logging
|
53
|
-
#
|
54
|
-
# @since 0.1.0
|
55
|
-
#
|
56
|
-
# @return [Class] the {Config#logger #config#logger} instance
|
57
|
-
def self.logger
|
58
|
-
config.logger
|
59
|
-
end
|
60
|
-
end
|