metaractor 3.3.0 → 3.3.3
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/.envrc +5 -0
- data/.github/workflows/specs.yml +13 -0
- data/.gitignore +5 -0
- data/.rspec +0 -1
- data/.ruby-version +1 -0
- data/Gemfile +1 -2
- data/README.md +52 -9
- data/Rakefile +1 -1
- data/flake.lock +417 -0
- data/flake.nix +67 -0
- data/lib/metaractor/context_errors.rb +1 -1
- data/lib/metaractor/errors.rb +22 -24
- data/lib/metaractor/failure_output.rb +2 -2
- data/lib/metaractor/handle_errors.rb +1 -0
- data/lib/metaractor/namespace.rb +2 -3
- data/lib/metaractor/organizer.rb +10 -0
- data/lib/metaractor/parameters.rb +22 -19
- data/lib/metaractor/spec.rb +10 -7
- data/lib/metaractor/version.rb +1 -1
- data/lib/metaractor.rb +23 -22
- data/metaractor.gemspec +24 -25
- metadata +28 -22
- data/.buildkite/pipeline.yml +0 -93
- data/Deskfile +0 -3
- data/Dockerfile +0 -78
- data/brew-shim +0 -10
- data/compose.yml +0 -35
- data/docker-entrypoint.sh +0 -39
data/lib/metaractor/errors.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "sycamore"
|
2
|
+
require "forwardable"
|
3
3
|
module Metaractor
|
4
4
|
class Errors
|
5
5
|
extend Forwardable
|
@@ -21,15 +21,15 @@ module Metaractor
|
|
21
21
|
|
22
22
|
names = object.class.i18n_parent_names
|
23
23
|
until names.empty?
|
24
|
-
defaults << [
|
25
|
-
item.nil? || item ==
|
26
|
-
end.join(
|
24
|
+
defaults << ["errors", names.join("."), "parameters", path_elements.join("."), @value.to_s].reject do |item|
|
25
|
+
item.nil? || item == ""
|
26
|
+
end.join(".").to_sym
|
27
27
|
names.pop
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
unless path_elements.empty?
|
32
|
-
defaults << :"errors.parameters.#{path_elements.join(
|
32
|
+
defaults << :"errors.parameters.#{path_elements.join(".")}.#{@value}"
|
33
33
|
end
|
34
34
|
defaults << :"errors.parameters.#{@value}"
|
35
35
|
|
@@ -41,18 +41,18 @@ module Metaractor
|
|
41
41
|
parameter: path_elements.last
|
42
42
|
)
|
43
43
|
else
|
44
|
-
"#{path_elements.join(
|
44
|
+
"#{path_elements.join(".")} #{@value}".lstrip
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
def ==(other)
|
49
|
-
if other.is_a?(self.class)
|
50
|
-
|
49
|
+
@value == if other.is_a?(self.class)
|
50
|
+
other.value
|
51
51
|
else
|
52
|
-
|
52
|
+
other
|
53
53
|
end
|
54
54
|
end
|
55
|
-
|
55
|
+
alias_method :eql?, :==
|
56
56
|
|
57
57
|
def hash
|
58
58
|
@value.hash
|
@@ -73,10 +73,10 @@ module Metaractor
|
|
73
73
|
trees = []
|
74
74
|
[error, errors].each do |h|
|
75
75
|
tree = nil
|
76
|
-
if h.is_a? Metaractor::Errors
|
77
|
-
|
76
|
+
tree = if h.is_a? Metaractor::Errors
|
77
|
+
Sycamore::Tree.from(h.instance_variable_get(:@tree))
|
78
78
|
else
|
79
|
-
|
79
|
+
Sycamore::Tree.from(normalize_error_hash(h))
|
80
80
|
end
|
81
81
|
|
82
82
|
unless tree.empty?
|
@@ -112,7 +112,7 @@ module Metaractor
|
|
112
112
|
|
113
113
|
messages
|
114
114
|
end
|
115
|
-
|
115
|
+
alias_method :to_a, :full_messages
|
116
116
|
|
117
117
|
def full_messages_for(*path)
|
118
118
|
child_tree = @tree.fetch_path(path)
|
@@ -133,19 +133,17 @@ module Metaractor
|
|
133
133
|
unwrapped_tree(result).to_h
|
134
134
|
end
|
135
135
|
end
|
136
|
-
|
136
|
+
alias_method :[], :dig
|
137
137
|
|
138
138
|
def include?(*elements)
|
139
139
|
if elements.size == 1 &&
|
140
140
|
elements.first.is_a?(Hash)
|
141
141
|
unwrapped_tree.include?(*elements)
|
142
|
+
elsif elements.all? { |e| e.is_a? String }
|
143
|
+
full_messages.include?(*elements)
|
142
144
|
else
|
143
|
-
|
144
|
-
|
145
|
-
else
|
146
|
-
elements.all? do |element|
|
147
|
-
@tree.include_path?(element)
|
148
|
-
end
|
145
|
+
elements.all? do |element|
|
146
|
+
@tree.include_path?(element)
|
149
147
|
end
|
150
148
|
end
|
151
149
|
end
|
@@ -169,12 +167,12 @@ module Metaractor
|
|
169
167
|
@tree.to_h
|
170
168
|
end
|
171
169
|
end
|
172
|
-
|
170
|
+
alias_method :to_hash, :to_h
|
173
171
|
|
174
172
|
def inspect
|
175
173
|
str = "<##{self.class.name}: "
|
176
174
|
|
177
|
-
if !
|
175
|
+
if !empty?
|
178
176
|
str << "Errors:\n"
|
179
177
|
str << Metaractor.format_hash(to_h(unwrap: false))
|
180
178
|
str << "\n"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Metaractor
|
2
2
|
module FailureOutput
|
3
3
|
def to_s
|
4
|
-
str =
|
4
|
+
str = ""
|
5
5
|
|
6
6
|
if !context.errors.empty?
|
7
7
|
str << "Errors:\n"
|
@@ -19,7 +19,7 @@ module Metaractor
|
|
19
19
|
end
|
20
20
|
|
21
21
|
str << "Context:\n"
|
22
|
-
str << Metaractor.format_hash(context.to_h.
|
22
|
+
str << Metaractor.format_hash(context.to_h.except(:errors))
|
23
23
|
str
|
24
24
|
end
|
25
25
|
end
|
data/lib/metaractor/namespace.rb
CHANGED
@@ -11,7 +11,7 @@ module Metaractor
|
|
11
11
|
if defined?(@parent_name)
|
12
12
|
@parent_name
|
13
13
|
else
|
14
|
-
parent_name = name =~ /::[^:]+\z/ ? -$` : nil
|
14
|
+
parent_name = (name =~ /::[^:]+\z/) ? -$` : nil
|
15
15
|
@parent_name = parent_name unless frozen?
|
16
16
|
parent_name
|
17
17
|
end
|
@@ -26,7 +26,7 @@ module Metaractor
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def i18n_parent_names
|
29
|
-
module_parent_names.map {|name| underscore_module_name(name).to_sym }
|
29
|
+
module_parent_names.map { |name| underscore_module_name(name).to_sym }
|
30
30
|
end
|
31
31
|
|
32
32
|
private
|
@@ -40,7 +40,6 @@ module Metaractor
|
|
40
40
|
word.downcase!
|
41
41
|
word
|
42
42
|
end
|
43
|
-
|
44
43
|
end
|
45
44
|
end
|
46
45
|
end
|
@@ -31,7 +31,7 @@ module Metaractor
|
|
31
31
|
def <=>(other)
|
32
32
|
return nil unless other.instance_of? self.class
|
33
33
|
return nil if name == other.name && options != other.options
|
34
|
-
|
34
|
+
name.to_s <=> other.name.to_s
|
35
35
|
end
|
36
36
|
|
37
37
|
def [](key)
|
@@ -59,16 +59,17 @@ module Metaractor
|
|
59
59
|
end
|
60
60
|
|
61
61
|
protected
|
62
|
+
|
62
63
|
attr_reader :options
|
63
64
|
end
|
64
65
|
|
65
66
|
module ClassMethods
|
66
67
|
def parameter(name, **options)
|
67
|
-
if param =
|
68
|
+
if (param = parameter_hash[name.to_sym])
|
68
69
|
param.merge!(**options)
|
69
70
|
else
|
70
71
|
Parameter.new(name, **options).tap do |parameter|
|
71
|
-
|
72
|
+
parameter_hash[parameter.name] = parameter
|
72
73
|
end
|
73
74
|
end
|
74
75
|
end
|
@@ -90,7 +91,7 @@ module Metaractor
|
|
90
91
|
def required(*params, **options)
|
91
92
|
if params.empty?
|
92
93
|
tree = options
|
93
|
-
|
94
|
+
requirement_trees << tree
|
94
95
|
parameters(*parameters_in_tree(tree), required: tree)
|
95
96
|
else
|
96
97
|
parameters(*params, required: true, **options)
|
@@ -103,7 +104,7 @@ module Metaractor
|
|
103
104
|
|
104
105
|
def validate_parameters(*hooks, &block)
|
105
106
|
hooks << block if block
|
106
|
-
hooks.each {|hook| validate_hooks.push(hook) }
|
107
|
+
hooks.each { |hook| validate_hooks.push(hook) }
|
107
108
|
end
|
108
109
|
|
109
110
|
def validate_hooks
|
@@ -112,7 +113,7 @@ module Metaractor
|
|
112
113
|
|
113
114
|
def parameters_in_tree(tree)
|
114
115
|
if tree.respond_to?(:to_h)
|
115
|
-
tree.to_h.values.first.to_a.flat_map {|t| parameters_in_tree(t)}
|
116
|
+
tree.to_h.values.first.to_a.flat_map { |t| parameters_in_tree(t) }
|
116
117
|
else
|
117
118
|
[tree]
|
118
119
|
end
|
@@ -128,7 +129,7 @@ module Metaractor
|
|
128
129
|
end
|
129
130
|
|
130
131
|
def requirement_trees=(trees)
|
131
|
-
self.class.requirement_trees=(trees)
|
132
|
+
self.class.requirement_trees = (trees)
|
132
133
|
end
|
133
134
|
|
134
135
|
def remove_blank_values
|
@@ -156,12 +157,14 @@ module Metaractor
|
|
156
157
|
end
|
157
158
|
|
158
159
|
def _parameter_default(name)
|
159
|
-
default =
|
160
|
+
default = parameters[name][:default]
|
160
161
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
162
|
+
if default.respond_to?(:call)
|
163
|
+
instance_exec(&default)
|
164
|
+
elsif default.respond_to?(:dup)
|
165
|
+
default.dup
|
166
|
+
else
|
167
|
+
default
|
165
168
|
end
|
166
169
|
end
|
167
170
|
|
@@ -169,7 +172,7 @@ module Metaractor
|
|
169
172
|
parameters.each do |name, parameter|
|
170
173
|
next unless parameter[:type]
|
171
174
|
|
172
|
-
if context.has_key?(name) && context[name]
|
175
|
+
if context.has_key?(name) && !context[name].nil?
|
173
176
|
callable = parameter[:type]
|
174
177
|
|
175
178
|
if callable.is_a?(Symbol)
|
@@ -206,7 +209,7 @@ module Metaractor
|
|
206
209
|
valid, message = parameter_valid? param
|
207
210
|
|
208
211
|
if !valid
|
209
|
-
if message_override
|
212
|
+
if !message_override.nil?
|
210
213
|
add_parameter_error(param: param, message: message_override)
|
211
214
|
else
|
212
215
|
add_parameter_error(message: "Required parameters: #{message}")
|
@@ -234,16 +237,16 @@ module Metaractor
|
|
234
237
|
|
235
238
|
case operator
|
236
239
|
when :or
|
237
|
-
|
240
|
+
[valids.any?, "(#{messages.join(" or ")})"]
|
238
241
|
when :xor
|
239
|
-
|
242
|
+
[valids.one?, "(#{messages.join(" xor ")})"]
|
240
243
|
when :and
|
241
|
-
|
244
|
+
[valids.all?, "(#{messages.join(" and ")})"]
|
242
245
|
else
|
243
246
|
raise "invalid required parameter #{param.inspect}"
|
244
247
|
end
|
245
248
|
else
|
246
|
-
|
249
|
+
[!context[param].nil?, param.to_s]
|
247
250
|
end
|
248
251
|
end
|
249
252
|
|
@@ -256,7 +259,7 @@ module Metaractor
|
|
256
259
|
run_hooks(self.class.validate_hooks)
|
257
260
|
end
|
258
261
|
|
259
|
-
def add_parameter_error(param: nil
|
262
|
+
def add_parameter_error(message:, param: nil)
|
260
263
|
add_error(
|
261
264
|
message: "#{param} #{message}".lstrip
|
262
265
|
)
|
data/lib/metaractor/spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "metaractor"
|
2
|
+
require "forwardable"
|
3
3
|
|
4
4
|
module Metaractor
|
5
5
|
module Spec
|
@@ -13,15 +13,19 @@ module Metaractor
|
|
13
13
|
result.add_errors(messages: error_messages)
|
14
14
|
result.add_errors(errors: errors)
|
15
15
|
|
16
|
-
if (valid
|
16
|
+
if (!valid.nil? && !valid) || (!invalid.nil? && invalid)
|
17
17
|
result.invalidate!
|
18
18
|
end
|
19
19
|
|
20
20
|
if !result.errors.empty? ||
|
21
21
|
result.invalid? ||
|
22
|
-
(success
|
23
|
-
(failure
|
24
|
-
|
22
|
+
(!success.nil? && !success) ||
|
23
|
+
(!failure.nil? && failure)
|
24
|
+
begin
|
25
|
+
result.fail!
|
26
|
+
rescue
|
27
|
+
Interactor::Failure
|
28
|
+
end
|
25
29
|
end
|
26
30
|
|
27
31
|
result
|
@@ -69,6 +73,5 @@ module Metaractor
|
|
69
73
|
end
|
70
74
|
end
|
71
75
|
end
|
72
|
-
|
73
76
|
end
|
74
77
|
end
|
data/lib/metaractor/version.rb
CHANGED
data/lib/metaractor.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
1
|
+
require "metaractor/version"
|
2
|
+
require "interactor"
|
3
|
+
require "metaractor/errors"
|
4
|
+
require "metaractor/handle_errors"
|
5
|
+
require "metaractor/context_errors"
|
6
|
+
require "metaractor/parameters"
|
7
|
+
require "metaractor/run_with_context"
|
8
|
+
require "metaractor/context_validity"
|
9
|
+
require "metaractor/chain_failures"
|
10
|
+
require "metaractor/fail_from_context"
|
11
|
+
require "metaractor/context_has_key"
|
12
|
+
require "metaractor/failure_output"
|
13
|
+
require "i18n"
|
14
|
+
require "metaractor/namespace"
|
15
|
+
require "metaractor/organizer"
|
15
16
|
|
16
17
|
module Metaractor
|
17
18
|
def self.included(base)
|
@@ -42,20 +43,20 @@ module Metaractor
|
|
42
43
|
|
43
44
|
def self.default_modules
|
44
45
|
[
|
45
|
-
{
|
46
|
-
{
|
47
|
-
{
|
48
|
-
{
|
49
|
-
{
|
46
|
+
{module: Metaractor::HandleErrors, method: :include},
|
47
|
+
{module: Metaractor::Parameters, method: :include},
|
48
|
+
{module: Metaractor::RunWithContext, method: :include},
|
49
|
+
{module: Metaractor::ChainFailures, method: :include},
|
50
|
+
{module: Metaractor::Namespace, method: :include}
|
50
51
|
]
|
51
52
|
end
|
52
53
|
|
53
54
|
def self.include_module(mod)
|
54
|
-
modules << {
|
55
|
+
modules << {module: mod, method: :include}
|
55
56
|
end
|
56
57
|
|
57
58
|
def self.prepend_module(mod)
|
58
|
-
modules << {
|
59
|
+
modules << {module: mod, method: :prepend}
|
59
60
|
end
|
60
61
|
|
61
62
|
def self.format_hash(hash)
|
@@ -67,7 +68,7 @@ module Metaractor
|
|
67
68
|
end
|
68
69
|
|
69
70
|
def self.default_hash_formatter
|
70
|
-
->(hash){ hash.inspect }
|
71
|
+
->(hash) { hash.inspect }
|
71
72
|
end
|
72
73
|
|
73
74
|
def self.hash_formatter
|
data/metaractor.gemspec
CHANGED
@@ -1,34 +1,33 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
3
|
+
require "metaractor/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.license
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
6
|
+
spec.name = "metaractor"
|
7
|
+
spec.version = Metaractor::VERSION
|
8
|
+
spec.license = "Apache-2.0"
|
9
|
+
spec.authors = ["Ryan Schlesinger"]
|
10
|
+
spec.email = ["ryan@ryanschlesinger.com"]
|
12
11
|
|
13
|
-
spec.summary
|
14
|
-
spec.metadata
|
15
|
-
"homepage_uri" => "https://github.com/
|
16
|
-
"source_code_uri" => "https://github.com/
|
12
|
+
spec.summary = "Adds parameter validation and error control to interactor"
|
13
|
+
spec.metadata = {
|
14
|
+
"homepage_uri" => "https://github.com/metaractor/metaractor",
|
15
|
+
"source_code_uri" => "https://github.com/metaractor/metaractor"
|
17
16
|
}
|
18
17
|
|
19
|
-
spec.files
|
20
|
-
spec.bindir
|
21
|
-
spec.executables
|
22
|
-
spec.require_paths = [
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
23
22
|
|
24
|
-
spec.add_runtime_dependency
|
25
|
-
spec.add_runtime_dependency
|
26
|
-
spec.add_runtime_dependency
|
23
|
+
spec.add_runtime_dependency "interactor", "~> 3.1"
|
24
|
+
spec.add_runtime_dependency "metaractor-sycamore", "~> 0.4", ">= 0.4.3"
|
25
|
+
spec.add_runtime_dependency "i18n", "~> 1.8"
|
27
26
|
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
27
|
+
spec.add_development_dependency "bundler", "~> 2"
|
28
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.9"
|
30
|
+
spec.add_development_dependency "awesome_print", "~> 1.8"
|
31
|
+
spec.add_development_dependency "pry-byebug", "~> 3.9"
|
32
|
+
spec.add_development_dependency "activemodel", "~> 6.1"
|
34
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metaractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Schlesinger
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: interactor
|
@@ -25,19 +25,25 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: metaractor-sycamore
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.4'
|
34
|
+
- - ">="
|
32
35
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.4.
|
36
|
+
version: 0.4.3
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- -
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.4'
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.4.
|
46
|
+
version: 0.4.3
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: i18n
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,25 +142,24 @@ dependencies:
|
|
136
142
|
- - "~>"
|
137
143
|
- !ruby/object:Gem::Version
|
138
144
|
version: '6.1'
|
139
|
-
description:
|
145
|
+
description:
|
140
146
|
email:
|
141
|
-
- ryan@
|
147
|
+
- ryan@ryanschlesinger.com
|
142
148
|
executables: []
|
143
149
|
extensions: []
|
144
150
|
extra_rdoc_files: []
|
145
151
|
files:
|
146
|
-
- ".
|
152
|
+
- ".envrc"
|
153
|
+
- ".github/workflows/specs.yml"
|
147
154
|
- ".gitignore"
|
148
155
|
- ".rspec"
|
149
|
-
-
|
150
|
-
- Dockerfile
|
156
|
+
- ".ruby-version"
|
151
157
|
- Gemfile
|
152
158
|
- LICENSE
|
153
159
|
- README.md
|
154
160
|
- Rakefile
|
155
|
-
-
|
156
|
-
-
|
157
|
-
- docker-entrypoint.sh
|
161
|
+
- flake.lock
|
162
|
+
- flake.nix
|
158
163
|
- lib/metaractor.rb
|
159
164
|
- lib/metaractor/chain_failures.rb
|
160
165
|
- lib/metaractor/context_errors.rb
|
@@ -165,18 +170,19 @@ files:
|
|
165
170
|
- lib/metaractor/failure_output.rb
|
166
171
|
- lib/metaractor/handle_errors.rb
|
167
172
|
- lib/metaractor/namespace.rb
|
173
|
+
- lib/metaractor/organizer.rb
|
168
174
|
- lib/metaractor/parameters.rb
|
169
175
|
- lib/metaractor/run_with_context.rb
|
170
176
|
- lib/metaractor/spec.rb
|
171
177
|
- lib/metaractor/version.rb
|
172
178
|
- metaractor.gemspec
|
173
|
-
homepage:
|
179
|
+
homepage:
|
174
180
|
licenses:
|
175
181
|
- Apache-2.0
|
176
182
|
metadata:
|
177
|
-
homepage_uri: https://github.com/
|
178
|
-
source_code_uri: https://github.com/
|
179
|
-
post_install_message:
|
183
|
+
homepage_uri: https://github.com/metaractor/metaractor
|
184
|
+
source_code_uri: https://github.com/metaractor/metaractor
|
185
|
+
post_install_message:
|
180
186
|
rdoc_options: []
|
181
187
|
require_paths:
|
182
188
|
- lib
|
@@ -191,8 +197,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
197
|
- !ruby/object:Gem::Version
|
192
198
|
version: '0'
|
193
199
|
requirements: []
|
194
|
-
rubygems_version: 3.
|
195
|
-
signing_key:
|
200
|
+
rubygems_version: 3.4.10
|
201
|
+
signing_key:
|
196
202
|
specification_version: 4
|
197
203
|
summary: Adds parameter validation and error control to interactor
|
198
204
|
test_files: []
|