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 +4 -4
- data/Rakefile +10 -24
- data/app/models/concerns/journaled/changes.rb +5 -5
- data/app/models/journaled/change.rb +12 -12
- data/app/models/journaled/change_writer.rb +3 -2
- data/app/models/journaled/writer.rb +2 -1
- data/lib/journaled/relation_change_protection.rb +11 -10
- data/lib/journaled/version.rb +1 -1
- data/lib/journaled.rb +2 -2
- data/spec/dummy/config.ru +1 -1
- data/spec/jobs/journaled/delivery_job_spec.rb +10 -10
- data/spec/lib/journaled_spec.rb +4 -6
- data/spec/models/concerns/journaled/actor_spec.rb +2 -2
- data/spec/models/journaled/change_writer_spec.rb +1 -1
- data/spec/models/journaled/json_schema_model/validator_spec.rb +6 -6
- data/spec/models/journaled/writer_spec.rb +4 -4
- data/spec/rails_helper.rb +1 -1
- data/spec/spec_helper.rb +4 -0
- metadata +30 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfdabb8b24bdfdf23c4f77ec819f03e89a4a0239ed997368eb1f07ac0bc2cd5b
|
4
|
+
data.tar.gz: 97eeec1dfa22f7b683f23e322eb663e6fae4b47e0c2786690c4f44166b8cca51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
23
|
-
|
24
|
-
require 'rspec/core/rake_task'
|
25
|
-
RSpec::Core::RakeTask.new
|
9
|
+
require 'rubocop/rake_task'
|
10
|
+
RuboCop::RakeTask.new
|
26
11
|
|
27
|
-
|
28
|
-
|
12
|
+
require 'rspec/core'
|
13
|
+
require 'rspec/core/rake_task'
|
14
|
+
RSpec::Core::RakeTask.new(:spec)
|
29
15
|
|
30
|
-
|
16
|
+
def default_task
|
31
17
|
if ENV['APPRAISAL_INITIALIZED'] || ENV['CI']
|
32
|
-
|
18
|
+
%i(rubocop spec)
|
33
19
|
else
|
34
20
|
require 'appraisal'
|
35
21
|
Appraisal::Task.new
|
36
|
-
|
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/
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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.
|
56
|
-
|
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
|
3
|
-
unless force || !@klass.respond_to?(:journaled_attribute_names) || @klass.journaled_attribute_names.empty?
|
4
|
-
conflicting_journaled_attribute_names =
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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:
|
data/lib/journaled/version.rb
CHANGED
data/lib/journaled.rb
CHANGED
@@ -20,7 +20,7 @@ module Journaled
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def enabled?
|
23
|
-
|
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
@@ -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
|
data/spec/lib/journaled_spec.rb
CHANGED
@@ -75,12 +75,10 @@ RSpec.describe Journaled do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
around do |example|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
36
|
-
expect(Journaled::Current.actor).to
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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.
|
122
|
+
enqueued_jobs.count { |j| j[:job] == Journaled::DeliveryJob }
|
123
123
|
else
|
124
|
-
enqueued_jobs.
|
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.
|
136
|
+
enqueued_jobs.count { |j| j[:job] == Journaled::DeliveryJob }
|
137
137
|
else
|
138
|
-
enqueued_jobs.
|
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('
|
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.
|
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:
|
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:
|
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:
|
99
|
+
version: '0'
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
|
-
name:
|
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:
|
129
|
+
name: rspec-rails
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
131
131
|
requirements:
|
132
|
-
- - "
|
132
|
+
- - ">="
|
133
133
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
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: '
|
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: '
|
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.
|
323
|
+
rubygems_version: 3.3.5
|
309
324
|
signing_key:
|
310
325
|
specification_version: 4
|
311
326
|
summary: Journaling for Betterment apps.
|