active_interaction 4.0.3 → 4.1.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 +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
|
[](https://rubygems.org/gems/active_interaction)
|
7
7
|
[](https://github.com/AaronLasseigne/active_interaction/actions?query=workflow%3ATest)
|
8
|
-
[](https://coveralls.io/r/orgsync/active_interaction)
|
9
|
-
[](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.
|