active_interaction 4.0.3 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +42 -7
- data/README.md +12 -17
- data/lib/active_interaction/filters/array_filter.rb +3 -5
- data/lib/active_interaction/filters/hash_filter.rb +1 -1
- data/lib/active_interaction/filters/interface_filter.rb +2 -1
- data/lib/active_interaction/inputs.rb +2 -42
- data/lib/active_interaction/modules/validation.rb +6 -15
- data/lib/active_interaction/version.rb +1 -1
- data/lib/active_interaction.rb +1 -0
- data/spec/active_interaction/filters/array_filter_spec.rb +12 -8
- data/spec/active_interaction/filters/interface_filter_spec.rb +11 -0
- data/spec/active_interaction/integration/hash_interaction_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -6
- metadata +31 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 557de518b6e1a33937d70d31e6c29dd6179384372e082595f8087b3efcdae784
|
4
|
+
data.tar.gz: 2ba312b6ddc61043acbc8bcb48dbbc4a60010be6701a5a368325d0a14fc4c557
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28674a0400c7bd8dafaae7430f1609fdbd3cd93e3ca5c60a07d2df2970b825a7e218d2482026f0a6365ba11fdd6518830fdfb96f496909ee7d8cb63154c5b8e7
|
7
|
+
data.tar.gz: e527210922d3e9af79ff3c61f2e5d1ba873fe9eb31be543ffd640d255f69de19b40d0621ff9900db19e3cf3f553c8cfbcf583954385d2c8a3db2f24a747037f7
|
data/CHANGELOG.md
CHANGED
@@ -1,19 +1,44 @@
|
|
1
|
+
# [4.1.0][] (2021-12-30)
|
2
|
+
|
3
|
+
## Added
|
4
|
+
|
5
|
+
- [#518][] - Add Rails 7 support
|
6
|
+
|
7
|
+
# [4.0.6][] (2021-10-13)
|
8
|
+
|
9
|
+
## Fixed
|
10
|
+
|
11
|
+
- [#515][] - Filters nested in arrays should accept default values as indicated in the documentation.
|
12
|
+
|
13
|
+
# [4.0.5][] (2021-07-11)
|
14
|
+
|
15
|
+
## Fixed
|
16
|
+
|
17
|
+
- [#480][] - Interfaces used inside hashes failed to recognize `nil` as a non-value.
|
18
|
+
|
19
|
+
# [4.0.4][] (2021-07-03)
|
20
|
+
|
21
|
+
## Fixed
|
22
|
+
|
23
|
+
- [#510][] - Hash parameters failed when working outside of Rails.
|
24
|
+
- [#511][] - Nested filters with options but no `:class` failed to have `:class` automatically added.
|
25
|
+
|
1
26
|
# [4.0.3][] (2021-06-24)
|
2
27
|
|
3
|
-
##
|
28
|
+
## Fixed
|
4
29
|
|
5
30
|
- [#499][] - `given?` now recognizes multi-part date inputs by their primary key name
|
6
31
|
- [#493][] - `compose` now properly accepts `Inputs`
|
7
32
|
|
8
33
|
# [4.0.2][] (2021-06-22)
|
9
34
|
|
10
|
-
##
|
35
|
+
## Fixed
|
11
36
|
|
12
37
|
- [#505][] - Nested Interface filters using the `:methods` option threw an error.
|
13
38
|
|
14
39
|
# [4.0.1][] (2021-05-26)
|
15
40
|
|
16
|
-
##
|
41
|
+
## Fixed
|
17
42
|
|
18
43
|
- Fix regression of filter name relaxing.
|
19
44
|
- [#495][] - Fix time filter ignoring time zones
|
@@ -77,7 +102,7 @@ class Example < ActiveInteraction::Base
|
|
77
102
|
|
78
103
|
validates :first_name,
|
79
104
|
presence: true,
|
80
|
-
unless:
|
105
|
+
unless: -> { first_name.nil? }
|
81
106
|
|
82
107
|
def execute
|
83
108
|
# ...
|
@@ -176,13 +201,13 @@ has a particular module included, you'll need to use the newly expanded
|
|
176
201
|
|
177
202
|
## Fixed
|
178
203
|
|
179
|
-
- [486][] `valid?` returns true if block not called and error added in execute around callback.
|
204
|
+
- [#486][] `valid?` returns true if block not called and error added in execute around callback.
|
180
205
|
|
181
206
|
# [3.8.2][] (2020-04-22)
|
182
207
|
|
183
208
|
## Fixed
|
184
209
|
|
185
|
-
- [479][] Composed interactions that throw errors now show a complete backtrace instead of ending at the `run!` of the outermost interaction.
|
210
|
+
- [#479][] Composed interactions that throw errors now show a complete backtrace instead of ending at the `run!` of the outermost interaction.
|
186
211
|
|
187
212
|
# [3.8.1][] (2020-04-04)
|
188
213
|
|
@@ -951,7 +976,11 @@ Example.run
|
|
951
976
|
|
952
977
|
- Initial release.
|
953
978
|
|
954
|
-
[4.0
|
979
|
+
[4.1.0]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.6...v4.1.0
|
980
|
+
[4.0.6]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.5...v4.0.6
|
981
|
+
[4.0.5]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.4...v4.0.5
|
982
|
+
[4.0.4]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.3...v4.0.4
|
983
|
+
[4.0.3]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.2...v4.0.3
|
955
984
|
[4.0.2]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.1...v4.0.2
|
956
985
|
[4.0.1]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.0...v4.0.1
|
957
986
|
[4.0.0]: https://github.com/AaronLasseigne/active_interaction/compare/v3.8.3...v4.0.0
|
@@ -1163,3 +1192,9 @@ Example.run
|
|
1163
1192
|
[#505]: https://github.com/AaronLasseigne/active_interaction/issues/505
|
1164
1193
|
[#499]: https://github.com/AaronLasseigne/active_interaction/issues/499
|
1165
1194
|
[#493]: https://github.com/AaronLasseigne/active_interaction/issues/493
|
1195
|
+
[#510]: https://github.com/AaronLasseigne/active_interaction/issues/510
|
1196
|
+
[#511]: https://github.com/AaronLasseigne/active_interaction/issues/511
|
1197
|
+
[#412]: https://github.com/AaronLasseigne/active_interaction/issues/412
|
1198
|
+
[#480]: https://github.com/AaronLasseigne/active_interaction/issues/480
|
1199
|
+
[#515]: https://github.com/AaronLasseigne/active_interaction/issues/515
|
1200
|
+
[#518]: https://github.com/AaronLasseigne/active_interaction/issues/518
|
data/README.md
CHANGED
@@ -5,8 +5,6 @@ It's an implementation of the command pattern in Ruby.
|
|
5
5
|
|
6
6
|
[![Version](https://img.shields.io/gem/v/active_interaction.svg?style=flat-square)](https://rubygems.org/gems/active_interaction)
|
7
7
|
[![Test](https://img.shields.io/github/workflow/status/AaronLasseigne/active_interaction/Test?label=Test&style=flat-square)](https://github.com/AaronLasseigne/active_interaction/actions?query=workflow%3ATest)
|
8
|
-
[![Coverage](https://img.shields.io/coveralls/github/AaronLasseigne/active_interaction.svg?style=flat-square)](https://coveralls.io/r/orgsync/active_interaction)
|
9
|
-
[![Climate](https://img.shields.io/codeclimate/maintainability/orgsync/active_interaction.svg?style=flat-square)](https://codeclimate.com/github/orgsync/active_interaction)
|
10
8
|
|
11
9
|
---
|
12
10
|
|
@@ -58,20 +56,20 @@ handles your verbs.
|
|
58
56
|
- [Translations](#translations)
|
59
57
|
- [Credits](#credits)
|
60
58
|
|
61
|
-
[
|
59
|
+
[API Documentation][]
|
62
60
|
|
63
61
|
## Installation
|
64
62
|
|
65
63
|
Add it to your Gemfile:
|
66
64
|
|
67
65
|
``` rb
|
68
|
-
gem 'active_interaction', '~> 4.
|
66
|
+
gem 'active_interaction', '~> 4.1'
|
69
67
|
```
|
70
68
|
|
71
69
|
Or install it manually:
|
72
70
|
|
73
71
|
``` sh
|
74
|
-
$ gem install active_interaction --version '~> 4.
|
72
|
+
$ gem install active_interaction --version '~> 4.1'
|
75
73
|
```
|
76
74
|
|
77
75
|
This project uses [Semantic Versioning][]. Check out [GitHub releases][] for a
|
@@ -977,10 +975,10 @@ class UpdateAccount < ActiveInteraction::Base
|
|
977
975
|
|
978
976
|
validates :first_name,
|
979
977
|
presence: true,
|
980
|
-
unless:
|
978
|
+
unless: -> { first_name.nil? }
|
981
979
|
validates :last_name,
|
982
980
|
presence: true,
|
983
|
-
unless:
|
981
|
+
unless: -> { last_name.nil? }
|
984
982
|
|
985
983
|
def execute
|
986
984
|
account.first_name = first_name if first_name.present?
|
@@ -1021,9 +1019,9 @@ end
|
|
1021
1019
|
|
1022
1020
|
### Callbacks
|
1023
1021
|
|
1024
|
-
|
1025
|
-
ActiveInteraction
|
1026
|
-
|
1022
|
+
[ActiveSupport::Callbacks][] provides a powerful framework for defining callbacks.
|
1023
|
+
ActiveInteraction uses that framework to allow hooking into various parts of an
|
1024
|
+
interaction's lifecycle.
|
1027
1025
|
|
1028
1026
|
``` rb
|
1029
1027
|
class Increment < ActiveInteraction::Base
|
@@ -1448,8 +1446,8 @@ I18nInteraction.run(name: false).errors.messages[:name]
|
|
1448
1446
|
|
1449
1447
|
## Credits
|
1450
1448
|
|
1451
|
-
ActiveInteraction is brought to you by [Aaron Lasseigne][]
|
1452
|
-
[Taylor Fausak][] and
|
1449
|
+
ActiveInteraction is brought to you by [Aaron Lasseigne][].
|
1450
|
+
Along with Aaron, [Taylor Fausak][] helped create and maintain ActiveInteraction but has since moved on.
|
1453
1451
|
|
1454
1452
|
If you want to contribute to ActiveInteraction, please read
|
1455
1453
|
[our contribution guidelines][]. A [complete list of contributors][] is
|
@@ -1458,14 +1456,11 @@ available on GitHub.
|
|
1458
1456
|
ActiveInteraction is licensed under [the MIT License][].
|
1459
1457
|
|
1460
1458
|
[activeinteraction]: https://github.com/AaronLasseigne/active_interaction
|
1461
|
-
[
|
1459
|
+
[API Documentation]: http://rubydoc.info/github/AaronLasseigne/active_interaction
|
1462
1460
|
[semantic versioning]: http://semver.org/spec/v2.0.0.html
|
1463
1461
|
[GitHub releases]: https://github.com/AaronLasseigne/active_interaction/releases
|
1464
|
-
[the announcement post]: http://devblog.orgsync.com/2015/05/06/announcing-active-interaction-2/
|
1465
|
-
[active_model-errors_details]: https://github.com/cowbell/active_model-errors_details
|
1466
1462
|
[aaron lasseigne]: https://github.com/AaronLasseigne
|
1467
1463
|
[taylor fausak]: https://github.com/tfausak
|
1468
|
-
[orgsync]: https://github.com/orgsync
|
1469
1464
|
[our contribution guidelines]: CONTRIBUTING.md
|
1470
1465
|
[complete list of contributors]: https://github.com/AaronLasseigne/active_interaction/graphs/contributors
|
1471
1466
|
[the mit license]: LICENSE.md
|
@@ -1474,5 +1469,5 @@ ActiveInteraction is licensed under [the MIT License][].
|
|
1474
1469
|
[the filters section]: #filters
|
1475
1470
|
[the errors section]: #errors
|
1476
1471
|
[the optional inputs section]: #optional-inputs
|
1477
|
-
[aire]: example
|
1478
1472
|
[`with_options`]: http://api.rubyonrails.org/classes/Object.html#method-i-with_options
|
1473
|
+
[ActiveSupport::Callbacks]: https://api.rubyonrails.org/classes/ActiveSupport/Callbacks.html
|
@@ -73,7 +73,7 @@ module ActiveInteraction
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def add_option_in_place_of_name(klass, options)
|
76
|
-
if (keys = FILTER_NAME_OR_OPTION[klass.to_s]) && (keys
|
76
|
+
if (keys = FILTER_NAME_OR_OPTION[klass.to_s]) && (keys & options.keys).empty?
|
77
77
|
options.merge(
|
78
78
|
"#{keys.first}": name.to_s.singularize.camelize.to_sym
|
79
79
|
)
|
@@ -91,7 +91,7 @@ module ActiveInteraction
|
|
91
91
|
|
92
92
|
filters[filters.size.to_s.to_sym] = filter
|
93
93
|
|
94
|
-
validate!(
|
94
|
+
validate!(names)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
# rubocop:enable Style/MissingRespondToMissing
|
@@ -100,13 +100,11 @@ module ActiveInteraction
|
|
100
100
|
# @param names [Array<Symbol>]
|
101
101
|
#
|
102
102
|
# @raise [InvalidFilterError]
|
103
|
-
def validate!(
|
103
|
+
def validate!(names)
|
104
104
|
raise InvalidFilterError, 'multiple filters in array block' if filters.size > 1
|
105
105
|
|
106
106
|
raise InvalidFilterError, 'attribute names in array block' unless names.empty?
|
107
107
|
|
108
|
-
raise InvalidDefaultError, 'default values in array block' if filter.default?
|
109
|
-
|
110
108
|
nil
|
111
109
|
end
|
112
110
|
end
|
@@ -44,7 +44,7 @@ module ActiveInteraction
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def adjust_output(value, context)
|
47
|
-
value = value.to_hash
|
47
|
+
value = ActiveSupport::HashWithIndifferentAccess.new(value.to_hash)
|
48
48
|
|
49
49
|
initial = strip? ? ActiveSupport::HashWithIndifferentAccess.new : value
|
50
50
|
|
@@ -48,6 +48,7 @@ module ActiveInteraction
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def matches?(object)
|
51
|
+
return false if object.nil?
|
51
52
|
return matches_methods?(object) if options.key?(:methods)
|
52
53
|
|
53
54
|
const = from
|
@@ -61,7 +62,7 @@ module ActiveInteraction
|
|
61
62
|
end
|
62
63
|
|
63
64
|
def matches_methods?(object)
|
64
|
-
options
|
65
|
+
options[:methods].all? { |method| object.respond_to?(method) }
|
65
66
|
end
|
66
67
|
|
67
68
|
def checking_class_inheritance?(object, from)
|
@@ -73,48 +73,8 @@ module ActiveInteraction
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
def initialize
|
77
|
-
|
78
|
-
@groups.default_proc = ->(hash, key) { hash[key] = [] }
|
79
|
-
|
80
|
-
super(@inputs = {})
|
81
|
-
end
|
82
|
-
|
83
|
-
# Associates the `value` with the `key`. Allows the `key`/`value` pair to
|
84
|
-
# be associated with one or more groups.
|
85
|
-
#
|
86
|
-
# @example
|
87
|
-
# inputs.store(:key, :value)
|
88
|
-
# # => :value
|
89
|
-
# inputs.store(:key, :value, %i[a b])
|
90
|
-
# # => :value
|
91
|
-
#
|
92
|
-
# @param key [Object] The key to store the value under.
|
93
|
-
# @param value [Object] The value to store.
|
94
|
-
# @param groups [Array<Object>] The groups to store the pair under.
|
95
|
-
#
|
96
|
-
# @return [Object] value
|
97
|
-
# @private
|
98
|
-
def store(key, value, groups = [])
|
99
|
-
groups.each do |group|
|
100
|
-
@groups[group] << key
|
101
|
-
end
|
102
|
-
|
103
|
-
super(key, value)
|
104
|
-
end
|
105
|
-
|
106
|
-
# Returns inputs from the group name given.
|
107
|
-
#
|
108
|
-
# @example
|
109
|
-
# inputs.group(:a)
|
110
|
-
# # => {key: :value}
|
111
|
-
#
|
112
|
-
# @param name [Object] Name of the group to return.
|
113
|
-
#
|
114
|
-
# @return [Hash] Inputs from the group name given.
|
115
|
-
# @private
|
116
|
-
def group(name)
|
117
|
-
@inputs.select { |k, _| @groups[name].include?(k) }
|
76
|
+
def initialize(inputs = {})
|
77
|
+
super(inputs)
|
118
78
|
end
|
119
79
|
end
|
120
80
|
end
|
@@ -14,26 +14,17 @@ module ActiveInteraction
|
|
14
14
|
filter.clean(inputs[name], context)
|
15
15
|
rescue NoDefaultError
|
16
16
|
nil
|
17
|
-
rescue InvalidNestedValueError
|
18
|
-
|
19
|
-
|
20
|
-
errors <<
|
17
|
+
rescue InvalidNestedValueError => e
|
18
|
+
errors << [filter.name, :invalid_nested, { name: e.filter_name.inspect, value: e.input_value.inspect }]
|
19
|
+
rescue InvalidValueError
|
20
|
+
errors << [filter.name, :invalid_type, { type: type(filter) }]
|
21
|
+
rescue MissingValueError
|
22
|
+
errors << [filter.name, :missing]
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
26
|
private
|
25
27
|
|
26
|
-
def error_args(filter, error)
|
27
|
-
case error
|
28
|
-
when InvalidNestedValueError
|
29
|
-
[filter.name, :invalid_nested, { name: error.filter_name.inspect, value: error.input_value.inspect }]
|
30
|
-
when InvalidValueError
|
31
|
-
[filter.name, :invalid_type, { type: type(filter) }]
|
32
|
-
when MissingValueError
|
33
|
-
[filter.name, :missing]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
28
|
# @param filter [Filter]
|
38
29
|
def type(filter)
|
39
30
|
I18n.translate("#{Base.i18n_scope}.types.#{filter.class.slug}")
|
data/lib/active_interaction.rb
CHANGED
@@ -25,14 +25,6 @@ describe ActiveInteraction::ArrayFilter, :filter do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
context 'with a nested default' do
|
29
|
-
let(:block) { proc { array default: nil } }
|
30
|
-
|
31
|
-
it 'raises an error' do
|
32
|
-
expect { filter }.to raise_error ActiveInteraction::InvalidDefaultError
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
28
|
describe '#cast' do
|
37
29
|
let(:result) { filter.send(:cast, value, nil) }
|
38
30
|
|
@@ -137,6 +129,18 @@ describe ActiveInteraction::ArrayFilter, :filter do
|
|
137
129
|
expect(filter.filters[:'0'].options[:methods]).to eql %i[to_s]
|
138
130
|
end
|
139
131
|
end
|
132
|
+
|
133
|
+
context 'with another option set' do
|
134
|
+
let(:block) { proc { public_send(:object, converter: :new) } }
|
135
|
+
let(:name) { :objects }
|
136
|
+
|
137
|
+
it 'has a filter with the right options' do
|
138
|
+
expect(filter.filters[:'0'].options).to have_key(:class)
|
139
|
+
expect(filter.filters[:'0'].options[:class]).to eql :Object
|
140
|
+
expect(filter.filters[:'0'].options).to have_key(:converter)
|
141
|
+
expect(filter.filters[:'0'].options[:converter]).to eql :new
|
142
|
+
end
|
143
|
+
end
|
140
144
|
end
|
141
145
|
end
|
142
146
|
|
@@ -61,6 +61,17 @@ describe ActiveInteraction::InterfaceFilter, :filter do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
context 'that is nil' do
|
65
|
+
let(:name) { :interface_module }
|
66
|
+
let(:value) { nil }
|
67
|
+
|
68
|
+
it 'raises an error' do
|
69
|
+
expect do
|
70
|
+
result
|
71
|
+
end.to raise_error ActiveInteraction::MissingValueError
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
64
75
|
context 'with the class itself' do
|
65
76
|
let(:name) { :interface_class }
|
66
77
|
let(:value) do
|
@@ -19,7 +19,7 @@ describe HashInteraction do
|
|
19
19
|
before { inputs[:a] = a }
|
20
20
|
|
21
21
|
it 'returns the correct value for :a' do
|
22
|
-
expect(result[:a]).to eql a
|
22
|
+
expect(result[:a]).to eql ActiveSupport::HashWithIndifferentAccess.new(a)
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'returns the correct value for :b' do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
# Disable code coverage for JRuby because it always reports 0% coverage.
|
2
|
-
if RUBY_ENGINE != 'jruby'
|
3
|
-
require 'coveralls'
|
4
|
-
Coveralls.wear!
|
5
|
-
end
|
6
|
-
|
7
1
|
require 'i18n'
|
8
2
|
I18n.config.enforce_available_locales = true if I18n.config.respond_to?(:enforce_available_locales)
|
9
3
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_interaction
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Lasseigne
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-12-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
version: '5'
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '8'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -30,23 +30,29 @@ dependencies:
|
|
30
30
|
version: '5'
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '8'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: activesupport
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
|
40
|
+
version: '5'
|
41
|
+
- - "<"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '8'
|
44
|
+
type: :runtime
|
42
45
|
prerelease: false
|
43
46
|
version_requirements: !ruby/object:Gem::Requirement
|
44
47
|
requirements:
|
45
48
|
- - ">="
|
46
49
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
50
|
+
version: '5'
|
51
|
+
- - "<"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '8'
|
48
54
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
55
|
+
name: actionpack
|
50
56
|
requirement: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
58
|
- - ">="
|
@@ -60,33 +66,33 @@ dependencies:
|
|
60
66
|
- !ruby/object:Gem::Version
|
61
67
|
version: '0'
|
62
68
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
69
|
+
name: activerecord
|
64
70
|
requirement: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- - "
|
72
|
+
- - ">="
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '0'
|
69
75
|
type: :development
|
70
76
|
prerelease: false
|
71
77
|
version_requirements: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
|
-
- - "
|
79
|
+
- - ">="
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
81
|
+
version: '0'
|
76
82
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
83
|
+
name: benchmark-ips
|
78
84
|
requirement: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
88
|
+
version: '2.7'
|
83
89
|
type: :development
|
84
90
|
prerelease: false
|
85
91
|
version_requirements: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
95
|
+
version: '2.7'
|
90
96
|
- !ruby/object:Gem::Dependency
|
91
97
|
name: kramdown
|
92
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,42 +141,42 @@ dependencies:
|
|
135
141
|
requirements:
|
136
142
|
- - "~>"
|
137
143
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
144
|
+
version: 1.24.0
|
139
145
|
type: :development
|
140
146
|
prerelease: false
|
141
147
|
version_requirements: !ruby/object:Gem::Requirement
|
142
148
|
requirements:
|
143
149
|
- - "~>"
|
144
150
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
151
|
+
version: 1.24.0
|
146
152
|
- !ruby/object:Gem::Dependency
|
147
153
|
name: rubocop-rake
|
148
154
|
requirement: !ruby/object:Gem::Requirement
|
149
155
|
requirements:
|
150
156
|
- - "~>"
|
151
157
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
158
|
+
version: 0.6.0
|
153
159
|
type: :development
|
154
160
|
prerelease: false
|
155
161
|
version_requirements: !ruby/object:Gem::Requirement
|
156
162
|
requirements:
|
157
163
|
- - "~>"
|
158
164
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
165
|
+
version: 0.6.0
|
160
166
|
- !ruby/object:Gem::Dependency
|
161
167
|
name: rubocop-rspec
|
162
168
|
requirement: !ruby/object:Gem::Requirement
|
163
169
|
requirements:
|
164
170
|
- - "~>"
|
165
171
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
172
|
+
version: 2.7.0
|
167
173
|
type: :development
|
168
174
|
prerelease: false
|
169
175
|
version_requirements: !ruby/object:Gem::Requirement
|
170
176
|
requirements:
|
171
177
|
- - "~>"
|
172
178
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
179
|
+
version: 2.7.0
|
174
180
|
- !ruby/object:Gem::Dependency
|
175
181
|
name: yard
|
176
182
|
requirement: !ruby/object:Gem::Requirement
|
@@ -303,6 +309,7 @@ metadata:
|
|
303
309
|
homepage_uri: https://github.com/AaronLasseigne/active_interaction
|
304
310
|
source_code_uri: https://github.com/AaronLasseigne/active_interaction
|
305
311
|
changelog_uri: https://github.com/AaronLasseigne/active_interaction/blob/master/CHANGELOG.md
|
312
|
+
rubygems_mfa_required: 'true'
|
306
313
|
post_install_message:
|
307
314
|
rdoc_options: []
|
308
315
|
require_paths:
|
@@ -318,7 +325,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
318
325
|
- !ruby/object:Gem::Version
|
319
326
|
version: '0'
|
320
327
|
requirements: []
|
321
|
-
rubygems_version: 3.2.
|
328
|
+
rubygems_version: 3.2.15
|
322
329
|
signing_key:
|
323
330
|
specification_version: 4
|
324
331
|
summary: Manage application specific business logic.
|