journaled 4.1.0 → 4.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88602263644ea51719a18c5ee3e719d2c13a9e69049e1f20a52a44edc38a0835
4
- data.tar.gz: c7cafdb9f305e51c3590d09815d5d6f909db496866c774ab442ffaa334be927c
3
+ metadata.gz: bfdabb8b24bdfdf23c4f77ec819f03e89a4a0239ed997368eb1f07ac0bc2cd5b
4
+ data.tar.gz: 97eeec1dfa22f7b683f23e322eb663e6fae4b47e0c2786690c4f44166b8cca51
5
5
  SHA512:
6
- metadata.gz: 6bf229efd53882ed50931c964c1564b01603fa22ea2083b8a6039d0a0ed972d2cdc7bfc5913a9e9539d7dd023294c2a226963e2e2a526bf857926afe3e0c76c0
7
- data.tar.gz: cf7b28c58c40c9ee8348df60095a7b544c0a8b0ea448ffa20021aceda61ae2feda61110ef9685756d4bac7d3d887e12a181f1840d435b2d2f85aeba5d8a52e45
6
+ metadata.gz: 78c8b888f9c00a084e8d60c2f271d56a9a188f60287cb30edfbadc7a4f9fc1c3fc3210c763e757658a0040fb57f6f94f1a713fc1f95942db801e2e114dd50ec3
7
+ data.tar.gz: f0e56609680ecfc3e1f3f3a9d2ba801515762311307f0a208757a70a82ff7c37ba6af040f8ee5a64ebbf7a08a910579c27d65e940680b2406383b8eca022f323
data/Rakefile CHANGED
@@ -4,37 +4,23 @@ rescue LoadError
4
4
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
5
  end
6
6
 
7
- require 'rdoc/task'
8
-
9
- RDoc::Task.new(:rdoc) do |rdoc|
10
- rdoc.rdoc_dir = 'rdoc'
11
- rdoc.title = 'Journaled'
12
- rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.rdoc')
14
- rdoc.rdoc_files.include('lib/**/*.rb')
15
- end
16
-
17
- APP_RAKEFILE = File.expand_path('spec/dummy/Rakefile', __dir__)
18
- load 'rails/tasks/engine.rake'
19
-
20
7
  Bundler::GemHelper.install_tasks
21
8
 
22
- if %w(development test).include? Rails.env
23
- require 'rspec/core'
24
- require 'rspec/core/rake_task'
25
- RSpec::Core::RakeTask.new
9
+ require 'rubocop/rake_task'
10
+ RuboCop::RakeTask.new
26
11
 
27
- require 'rubocop/rake_task'
28
- RuboCop::RakeTask.new
12
+ require 'rspec/core'
13
+ require 'rspec/core/rake_task'
14
+ RSpec::Core::RakeTask.new(:spec)
29
15
 
30
- task(:default).clear
16
+ def default_task
31
17
  if ENV['APPRAISAL_INITIALIZED'] || ENV['CI']
32
- task default: %i(rubocop spec)
18
+ %i(rubocop spec)
33
19
  else
34
20
  require 'appraisal'
35
21
  Appraisal::Task.new
36
- task default: :appraisal
22
+ %i(appraisal)
37
23
  end
38
-
39
- task 'db:test:prepare' => 'db:setup'
40
24
  end
25
+
26
+ task(:default).clear.enhance(default_task)
@@ -39,8 +39,8 @@ module Journaled::Changes
39
39
  end
40
40
  end
41
41
 
42
- def update_columns(attributes, force: false)
43
- unless force || self.class.journaled_attribute_names.empty?
42
+ def update_columns(attributes, opts = { force: false })
43
+ unless opts[:force] || self.class.journaled_attribute_names.empty?
44
44
  conflicting_journaled_attribute_names = self.class.journaled_attribute_names & attributes.keys.map(&:to_sym)
45
45
  raise(<<~ERROR) if conflicting_journaled_attribute_names.present?
46
46
  #update_columns aborted by Journaled::Changes due to journaled attributes:
@@ -56,7 +56,7 @@ module Journaled::Changes
56
56
  end
57
57
 
58
58
  class_methods do
59
- def journal_changes_to(*attribute_names, as:, enqueue_with: {}) # rubocop:disable Naming/UncommunicativeMethodParamName
59
+ def journal_changes_to(*attribute_names, as:, enqueue_with: {}) # rubocop:disable Naming/MethodParameterName
60
60
  if attribute_names.empty? || attribute_names.any? { |n| !n.is_a?(Symbol) }
61
61
  raise "one or more symbol attribute_name arguments is required"
62
62
  end
@@ -69,8 +69,8 @@ module Journaled::Changes
69
69
  end
70
70
 
71
71
  if Rails::VERSION::MAJOR > 5 || (Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 2)
72
- def delete(id_or_array, force: false)
73
- if force || journaled_attribute_names.empty?
72
+ def delete(id_or_array, opts = { force: false })
73
+ if opts[:force] || journaled_attribute_names.empty?
74
74
  where(primary_key => id_or_array).delete_all(force: true)
75
75
  else
76
76
  raise(<<~ERROR)
@@ -2,20 +2,20 @@ class Journaled::Change
2
2
  include Journaled::Event
3
3
 
4
4
  attr_reader :table_name,
5
- :record_id,
6
- :database_operation,
7
- :logical_operation,
8
- :changes,
9
- :journaled_stream_name,
10
- :journaled_enqueue_opts,
11
- :actor
5
+ :record_id,
6
+ :database_operation,
7
+ :logical_operation,
8
+ :changes,
9
+ :journaled_stream_name,
10
+ :journaled_enqueue_opts,
11
+ :actor
12
12
 
13
13
  journal_attributes :table_name,
14
- :record_id,
15
- :database_operation,
16
- :logical_operation,
17
- :changes,
18
- :actor
14
+ :record_id,
15
+ :database_operation,
16
+ :logical_operation,
17
+ :changes,
18
+ :actor
19
19
 
20
20
  def initialize(table_name:,
21
21
  record_id:,
@@ -1,5 +1,6 @@
1
1
  class Journaled::ChangeWriter
2
2
  attr_reader :model, :change_definition
3
+
3
4
  delegate :attribute_names, :logical_operation, to: :change_definition
4
5
 
5
6
  def initialize(model:, change_definition:)
@@ -52,8 +53,8 @@ class Journaled::ChangeWriter
52
53
  private
53
54
 
54
55
  def pluck_changed_values(change_hash, index:)
55
- change_hash.each_with_object({}) do |(k, v), result|
56
- result[k] = v[index]
56
+ change_hash.transform_values do |v|
57
+ v[index]
57
58
  end
58
59
  end
59
60
 
@@ -28,12 +28,13 @@ class Journaled::Writer
28
28
  validate!
29
29
  Journaled::DeliveryJob
30
30
  .set(journaled_enqueue_opts.reverse_merge(priority: Journaled.job_priority))
31
- .perform_later(delivery_perform_args)
31
+ .perform_later(**delivery_perform_args)
32
32
  end
33
33
 
34
34
  private
35
35
 
36
36
  attr_reader :journaled_event
37
+
37
38
  delegate(*EVENT_METHOD_NAMES, to: :journaled_event)
38
39
 
39
40
  def validate!
@@ -1,14 +1,15 @@
1
1
  module Journaled::RelationChangeProtection
2
- def update_all(updates, force: false) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
3
- unless force || !@klass.respond_to?(:journaled_attribute_names) || @klass.journaled_attribute_names.empty?
4
- conflicting_journaled_attribute_names = if updates.is_a?(Hash)
5
- @klass.journaled_attribute_names & updates.keys.map(&:to_sym)
6
- elsif updates.is_a?(String)
7
- @klass.journaled_attribute_names.select do |a|
8
- updates.match?(/\b(?<!')#{a}(?!')\b/)
9
- end
10
- else
11
- raise "unsupported type '#{updates.class}' for 'updates'"
2
+ def update_all(updates, opts = { force: false }) # rubocop:disable Metrics/AbcSize
3
+ unless opts[:force] || !@klass.respond_to?(:journaled_attribute_names) || @klass.journaled_attribute_names.empty?
4
+ conflicting_journaled_attribute_names = case updates
5
+ when Hash
6
+ @klass.journaled_attribute_names & updates.keys.map(&:to_sym)
7
+ when String
8
+ @klass.journaled_attribute_names.select do |a|
9
+ updates.match?(/\b(?<!')#{a}(?!')\b/)
10
+ end
11
+ else
12
+ raise "unsupported type '#{updates.class}' for 'updates'"
12
13
  end
13
14
  raise(<<~ERROR) if conflicting_journaled_attribute_names.present?
14
15
  .update_all aborted by Journaled::Changes due to journaled attributes:
@@ -1,3 +1,3 @@
1
1
  module Journaled
2
- VERSION = "4.1.0".freeze
2
+ VERSION = "4.2.0".freeze
3
3
  end
data/lib/journaled.rb CHANGED
@@ -20,7 +20,7 @@ module Journaled
20
20
  end
21
21
 
22
22
  def enabled?
23
- !['0', 'false', false, 'f', ''].include?(ENV.fetch('JOURNALED_ENABLED', !development_or_test?))
23
+ ['0', 'false', false, 'f', ''].exclude?(ENV.fetch('JOURNALED_ENABLED', !development_or_test?))
24
24
  end
25
25
 
26
26
  def schema_providers
@@ -53,7 +53,7 @@ module Journaled
53
53
 
54
54
  def self.tagged(**tags)
55
55
  existing_tags = Current.tags
56
- tag!(tags)
56
+ tag!(**tags)
57
57
  yield
58
58
  ensure
59
59
  Current.tags = existing_tags
data/spec/dummy/config.ru CHANGED
@@ -1,4 +1,4 @@
1
1
  # This file is used by Rack-based servers to start the application.
2
2
 
3
- require ::File.expand_path('../config/environment', __FILE__)
3
+ require ::File.expand_path('config/environment', __dir__)
4
4
  run Rails.application
@@ -21,7 +21,7 @@ RSpec.describe Journaled::DeliveryJob do
21
21
  end
22
22
 
23
23
  it 'makes requests to AWS to put the event on the Kinesis with the correct body' do
24
- event = described_class.perform_now(args)
24
+ event = described_class.perform_now(**args)
25
25
 
26
26
  expect(event.shard_id).to eq '101'
27
27
  expect(event.sequence_number).to eq '101123'
@@ -60,7 +60,7 @@ RSpec.describe Journaled::DeliveryJob do
60
60
  end
61
61
 
62
62
  it 'initializes a Kinesis client with assume role credentials' do
63
- described_class.perform_now(args)
63
+ described_class.perform_now(**args)
64
64
 
65
65
  expect(Aws::AssumeRoleCredentials).to have_received(:new).with(
66
66
  client: aws_sts_client,
@@ -74,7 +74,7 @@ RSpec.describe Journaled::DeliveryJob do
74
74
  let(:stream_name) { nil }
75
75
 
76
76
  it 'raises an KeyError error' do
77
- expect { described_class.perform_now(args) }.to raise_error ArgumentError, 'missing keyword: stream_name'
77
+ expect { described_class.perform_now(**args) }.to raise_error ArgumentError, 'missing keyword: stream_name'
78
78
  end
79
79
  end
80
80
 
@@ -99,7 +99,7 @@ RSpec.describe Journaled::DeliveryJob do
99
99
  end
100
100
 
101
101
  it 'makes requests to AWS to put the event on the Kinesis with the correct body' do
102
- event = described_class.perform_now(args)
102
+ event = described_class.perform_now(**args)
103
103
 
104
104
  expect(event.shard_id).to eq '101'
105
105
  expect(event.sequence_number).to eq '101123'
@@ -119,7 +119,7 @@ RSpec.describe Journaled::DeliveryJob do
119
119
  end
120
120
 
121
121
  it 'makes requests to AWS to put the event on the Kinesis with the correct body' do
122
- event = described_class.perform_now(args)
122
+ event = described_class.perform_now(**args)
123
123
 
124
124
  expect(event.shard_id).to eq '101'
125
125
  expect(event.sequence_number).to eq '101123'
@@ -138,7 +138,7 @@ RSpec.describe Journaled::DeliveryJob do
138
138
 
139
139
  it 'catches the error and re-raises a subclass of NotTrulyExceptionalError and logs about the failure' do
140
140
  allow(Rails.logger).to receive(:error)
141
- expect { described_class.perform_now(args) }.to raise_error described_class::KinesisTemporaryFailure
141
+ expect { described_class.perform_now(**args) }.to raise_error described_class::KinesisTemporaryFailure
142
142
  expect(Rails.logger).to have_received(:error).with(
143
143
  "Kinesis Error - Server Error occurred - Aws::Kinesis::Errors::InternalFailure",
144
144
  ).once
@@ -152,7 +152,7 @@ RSpec.describe Journaled::DeliveryJob do
152
152
 
153
153
  it 'catches the error and re-raises a subclass of NotTrulyExceptionalError and logs about the failure' do
154
154
  allow(Rails.logger).to receive(:error)
155
- expect { described_class.perform_now(args) }.to raise_error described_class::KinesisTemporaryFailure
155
+ expect { described_class.perform_now(**args) }.to raise_error described_class::KinesisTemporaryFailure
156
156
  expect(Rails.logger).to have_received(:error).with(/\AKinesis Error/).once
157
157
  end
158
158
  end
@@ -163,7 +163,7 @@ RSpec.describe Journaled::DeliveryJob do
163
163
  end
164
164
 
165
165
  it 'raises an error that subclasses Aws::Kinesis::Errors::ServiceError' do
166
- expect { described_class.perform_now(args) }.to raise_error Aws::Kinesis::Errors::ServiceError
166
+ expect { described_class.perform_now(**args) }.to raise_error Aws::Kinesis::Errors::ServiceError
167
167
  end
168
168
  end
169
169
 
@@ -173,7 +173,7 @@ RSpec.describe Journaled::DeliveryJob do
173
173
  end
174
174
 
175
175
  it 'raises an AccessDeniedException error' do
176
- expect { described_class.perform_now(args) }.to raise_error Aws::Kinesis::Errors::AccessDeniedException
176
+ expect { described_class.perform_now(**args) }.to raise_error Aws::Kinesis::Errors::AccessDeniedException
177
177
  end
178
178
  end
179
179
 
@@ -184,7 +184,7 @@ RSpec.describe Journaled::DeliveryJob do
184
184
 
185
185
  it 'catches the error and re-raises a subclass of NotTrulyExceptionalError and logs about the failure' do
186
186
  allow(Rails.logger).to receive(:error)
187
- expect { described_class.perform_now(args) }.to raise_error described_class::KinesisTemporaryFailure
187
+ expect { described_class.perform_now(**args) }.to raise_error described_class::KinesisTemporaryFailure
188
188
  expect(Rails.logger).to have_received(:error).with(
189
189
  "Kinesis Error - Networking Error occurred - Seahorse::Client::NetworkingError",
190
190
  ).once
@@ -75,12 +75,10 @@ RSpec.describe Journaled do
75
75
  end
76
76
 
77
77
  around do |example|
78
- begin
79
- example.run
80
- ensure
81
- ActiveJob::Base.queue_adapter = :test
82
- ActiveJob::Base.enable_test_adapter(ActiveJob::QueueAdapters::TestAdapter.new)
83
- end
78
+ example.run
79
+ ensure
80
+ ActiveJob::Base.queue_adapter = :test
81
+ ActiveJob::Base.enable_test_adapter(ActiveJob::QueueAdapters::TestAdapter.new)
84
82
  end
85
83
 
86
84
  it 'does not raise an error' do
@@ -32,8 +32,8 @@ RSpec.describe Journaled::Actor do
32
32
 
33
33
  allow(subject).to receive(:current_user).and_return(nil)
34
34
 
35
- expect(Journaled::Current.journaled_actor_proc.call).to eq nil
36
- expect(Journaled::Current.actor).to eq nil
35
+ expect(Journaled::Current.journaled_actor_proc.call).to be_nil
36
+ expect(Journaled::Current.actor).to be_nil
37
37
  end
38
38
 
39
39
  it "Stores a thunk returning current_user if it is set when called" do
@@ -139,7 +139,7 @@ RSpec.describe Journaled::ChangeWriter do
139
139
  end
140
140
 
141
141
  it "doesn't set journaled_stream_name if model class doesn't respond to it" do
142
- expect(subject.journaled_change_for("update", {}).journaled_stream_name).to eq(nil)
142
+ expect(subject.journaled_change_for("update", {}).journaled_stream_name).to be_nil
143
143
  end
144
144
 
145
145
  context "with journaled default app name set" do
@@ -8,7 +8,7 @@ RSpec.describe Journaled::JsonSchemaModel::Validator do
8
8
  let(:attributes_to_validate) do
9
9
  {
10
10
  some_string: some_string_value,
11
- some_decimal: 0.1.to_d,
11
+ some_decimal: BigDecimal('0.1'),
12
12
  some_time: Time.zone.parse('2017-01-20 15:16:17 -05:00'),
13
13
  some_int: some_int_value,
14
14
  some_optional_string: some_optional_string_value,
@@ -66,7 +66,7 @@ RSpec.describe Journaled::JsonSchemaModel::Validator do
66
66
  context 'when all the required fields are provided' do
67
67
  context 'when all the fields are provided' do
68
68
  it 'is valid' do
69
- expect(subject.validate!(json_to_validate)).to eq true
69
+ expect(subject.validate!(json_to_validate)).to be true
70
70
  end
71
71
  end
72
72
 
@@ -74,7 +74,7 @@ RSpec.describe Journaled::JsonSchemaModel::Validator do
74
74
  let(:attributes_to_validate) do
75
75
  {
76
76
  some_string: some_string_value,
77
- some_decimal: 0.1.to_d,
77
+ some_decimal: BigDecimal('0.1'),
78
78
  some_time: Time.zone.parse('2017-01-20 15:16:17 -05:00'),
79
79
  some_int: some_int_value,
80
80
  some_nullable_field: some_nullable_field,
@@ -82,7 +82,7 @@ RSpec.describe Journaled::JsonSchemaModel::Validator do
82
82
  end
83
83
 
84
84
  it 'is valid' do
85
- expect(subject.validate!(json_to_validate)).to eq true
85
+ expect(subject.validate!(json_to_validate)).to be true
86
86
  end
87
87
  end
88
88
 
@@ -90,7 +90,7 @@ RSpec.describe Journaled::JsonSchemaModel::Validator do
90
90
  let(:some_nullable_optional_field) { nil }
91
91
 
92
92
  it 'is valid' do
93
- expect(subject.validate!(json_to_validate)).to eq true
93
+ expect(subject.validate!(json_to_validate)).to be true
94
94
  end
95
95
  end
96
96
 
@@ -107,7 +107,7 @@ RSpec.describe Journaled::JsonSchemaModel::Validator do
107
107
  let(:attributes_to_validate) do
108
108
  {
109
109
  some_string: some_string_value,
110
- some_decimal: 0.1.to_d,
110
+ some_decimal: BigDecimal('0.1'),
111
111
  some_time: Time.zone.parse('2017-01-20 15:16:17 -05:00'),
112
112
  }
113
113
  end
@@ -119,9 +119,9 @@ RSpec.describe Journaled::Writer do
119
119
  it 'defaults to the global default' do
120
120
  expect { subject.journal! }.to change {
121
121
  if Rails::VERSION::MAJOR < 6
122
- enqueued_jobs.select { |j| j[:job] == Journaled::DeliveryJob }.count
122
+ enqueued_jobs.count { |j| j[:job] == Journaled::DeliveryJob }
123
123
  else
124
- enqueued_jobs.select { |j| j['job_class'] == 'Journaled::DeliveryJob' && j['priority'] == 999 }.count
124
+ enqueued_jobs.count { |j| j['job_class'] == 'Journaled::DeliveryJob' && j['priority'] == 999 }
125
125
  end
126
126
  }.from(0).to(1)
127
127
  end
@@ -133,9 +133,9 @@ RSpec.describe Journaled::Writer do
133
133
  it 'enqueues a Journaled::DeliveryJob with the given priority' do
134
134
  expect { subject.journal! }.to change {
135
135
  if Rails::VERSION::MAJOR < 6
136
- enqueued_jobs.select { |j| j[:job] == Journaled::DeliveryJob }.count
136
+ enqueued_jobs.count { |j| j[:job] == Journaled::DeliveryJob }
137
137
  else
138
- enqueued_jobs.select { |j| j['job_class'] == 'Journaled::DeliveryJob' && j['priority'] == 13 }.count
138
+ enqueued_jobs.count { |j| j['job_class'] == 'Journaled::DeliveryJob' && j['priority'] == 13 }
139
139
  end
140
140
  }.from(0).to(1)
141
141
  end
data/spec/rails_helper.rb CHANGED
@@ -7,7 +7,7 @@ require 'timecop'
7
7
  require 'webmock/rspec'
8
8
  require 'journaled/rspec'
9
9
 
10
- Dir[Rails.root.join('..', 'support', '**', '*.rb')].each { |f| require f }
10
+ Dir[Rails.root.join('../support/**/*.rb')].sort.each { |f| require f }
11
11
 
12
12
  RSpec.configure do |config|
13
13
  config.use_transactional_fixtures = true
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  rails_env = ENV['RAILS_ENV'] ||= 'test'
2
+ require 'uncruft'
2
3
  require File.expand_path('dummy/config/environment.rb', __dir__)
3
4
 
5
+ Rails.application.config.active_record.sqlite3.represent_boolean_as_integer = true if Rails::VERSION::MAJOR < 6
6
+ Rails.application.config.active_record.legacy_connection_handling = false if Rails::VERSION::MAJOR >= 7
7
+
4
8
  Rails.configuration.database_configuration[rails_env].tap do |c|
5
9
  ActiveRecord::Tasks::DatabaseTasks.create(c)
6
10
  ActiveRecord::Base.establish_connection(c)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: journaled
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Lipson
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-11-04 00:00:00.000000000 Z
14
+ date: 2022-03-17 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activejob
@@ -87,18 +87,18 @@ dependencies:
87
87
  name: appraisal
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - "~>"
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 2.2.0
92
+ version: '0'
93
93
  type: :development
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - "~>"
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: 2.2.0
99
+ version: '0'
100
100
  - !ruby/object:Gem::Dependency
101
- name: rspec-rails
101
+ name: betterlint
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - ">="
@@ -126,19 +126,19 @@ dependencies:
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
- name: rubocop-betterment
129
+ name: rspec-rails
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - "~>"
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
- version: '1.3'
134
+ version: '0'
135
135
  type: :development
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - "~>"
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: '1.3'
141
+ version: '0'
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: spring
144
144
  requirement: !ruby/object:Gem::Requirement
@@ -195,6 +195,20 @@ dependencies:
195
195
  - - ">="
196
196
  - !ruby/object:Gem::Version
197
197
  version: '0'
198
+ - !ruby/object:Gem::Dependency
199
+ name: uncruft
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - ">="
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
198
212
  - !ruby/object:Gem::Dependency
199
213
  name: webmock
200
214
  requirement: !ruby/object:Gem::Requirement
@@ -289,7 +303,8 @@ files:
289
303
  homepage: http://github.com/Betterment/journaled
290
304
  licenses:
291
305
  - MIT
292
- metadata: {}
306
+ metadata:
307
+ rubygems_mfa_required: 'true'
293
308
  post_install_message:
294
309
  rdoc_options: []
295
310
  require_paths:
@@ -298,14 +313,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
298
313
  requirements:
299
314
  - - ">="
300
315
  - !ruby/object:Gem::Version
301
- version: '0'
316
+ version: '2.6'
302
317
  required_rubygems_version: !ruby/object:Gem::Requirement
303
318
  requirements:
304
319
  - - ">="
305
320
  - !ruby/object:Gem::Version
306
321
  version: '0'
307
322
  requirements: []
308
- rubygems_version: 3.0.1
323
+ rubygems_version: 3.3.5
309
324
  signing_key:
310
325
  specification_version: 4
311
326
  summary: Journaling for Betterment apps.