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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 965fd20ed2231b6cb6a86c1849e11138cb694a77e05cb24e0091674964bbbd51
4
- data.tar.gz: b86949412bf7a60d767fa27dec8b0092f0c0b053afb11bd50a5a5f09f83dc921
3
+ metadata.gz: 557de518b6e1a33937d70d31e6c29dd6179384372e082595f8087b3efcdae784
4
+ data.tar.gz: 2ba312b6ddc61043acbc8bcb48dbbc4a60010be6701a5a368325d0a14fc4c557
5
5
  SHA512:
6
- metadata.gz: 31878456f6b33fb902254fd44cc532d411a97db32ff347ca8bc8164166897d54cd0eae31e0add30f4f130f4e744a16cdb8970859d8bf79a842258b4c0ec38c0f
7
- data.tar.gz: 17addfece52ce88fe5757eae06e14930508d209747caba20bd3e1d9b1aff140d2525e9548ec4a19dd1388dc7ef7e780706e35850351e8b487cda36c3f5b10bd9
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
- ## Fix
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
- ## Fix
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
- ## Fix
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: 'first_name.nil?'
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.2]: https://github.com/AaronLasseigne/active_interaction/compare/v4.0.2...v4.0.3
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
- [Full Documentation][]
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.0'
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.0'
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: 'first_name.nil?'
978
+ unless: -> { first_name.nil? }
981
979
  validates :last_name,
982
980
  presence: true,
983
- unless: 'last_name.nil?'
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
- ActiveModel provides a powerful framework for defining callbacks.
1025
- ActiveInteraction hooks into that framework to allow hooking into various parts
1026
- of an interaction's lifecycle.
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][] and
1452
- [Taylor Fausak][] and was originally built at [OrgSync][].
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
- [Full Documentation]: http://rubydoc.info/github/orgsync/active_interaction
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 && options.keys).empty?
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!(filter, names)
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!(filter, names)
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.with_indifferent_access
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.fetch(:methods, []).all? { |method| object.respond_to?(method) }
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
- @groups = {}
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
- InvalidValueError,
19
- MissingValueError => e
20
- errors << error_args(filter, e)
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}")
@@ -4,5 +4,5 @@ module ActiveInteraction
4
4
  # The version number.
5
5
  #
6
6
  # @return [Gem::Version]
7
- VERSION = Gem::Version.new('4.0.3')
7
+ VERSION = Gem::Version.new('4.1.0')
8
8
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_model'
4
+ require 'active_support/hash_with_indifferent_access'
4
5
 
5
6
  # Manage application specific business logic.
6
7
  #
@@ -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.with_indifferent_access
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.3
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-06-25 00:00:00.000000000 Z
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: '7'
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: '7'
33
+ version: '8'
34
34
  - !ruby/object:Gem::Dependency
35
- name: actionpack
35
+ name: activesupport
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
41
- type: :development
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: '0'
50
+ version: '5'
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '8'
48
54
  - !ruby/object:Gem::Dependency
49
- name: activerecord
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: benchmark-ips
69
+ name: activerecord
64
70
  requirement: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - "~>"
72
+ - - ">="
67
73
  - !ruby/object:Gem::Version
68
- version: '2.7'
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: '2.7'
81
+ version: '0'
76
82
  - !ruby/object:Gem::Dependency
77
- name: coveralls
83
+ name: benchmark-ips
78
84
  requirement: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '0.8'
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: '0.8'
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.17.0
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.17.0
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.5.1
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.5.1
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: '2.1'
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: '2.1'
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.3
328
+ rubygems_version: 3.2.15
322
329
  signing_key:
323
330
  specification_version: 4
324
331
  summary: Manage application specific business logic.