journaled 2.5.0 → 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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +115 -24
  3. data/Rakefile +7 -1
  4. data/app/controllers/concerns/journaled/actor.rb +8 -5
  5. data/app/jobs/journaled/application_job.rb +4 -0
  6. data/app/jobs/journaled/delivery_job.rb +105 -0
  7. data/app/models/journaled/actor_uri_provider.rb +1 -2
  8. data/app/models/journaled/change.rb +3 -3
  9. data/app/models/journaled/change_writer.rb +5 -5
  10. data/app/models/journaled/event.rb +25 -3
  11. data/app/models/journaled/writer.rb +17 -14
  12. data/journaled_schemas/tagged_event.json +14 -0
  13. data/lib/journaled/current.rb +18 -0
  14. data/lib/journaled/engine.rb +5 -0
  15. data/lib/journaled/version.rb +1 -1
  16. data/lib/journaled.rb +35 -5
  17. data/spec/dummy/config/application.rb +1 -2
  18. data/spec/dummy/config/database.yml +4 -19
  19. data/spec/dummy/config/environments/development.rb +0 -13
  20. data/spec/dummy/config/environments/test.rb +3 -5
  21. data/spec/dummy/db/schema.rb +3 -16
  22. data/spec/{models/journaled/delivery_spec.rb → jobs/journaled/delivery_job_spec.rb} +79 -25
  23. data/spec/lib/journaled_spec.rb +39 -0
  24. data/spec/models/concerns/journaled/actor_spec.rb +8 -7
  25. data/spec/models/database_change_protection_spec.rb +19 -25
  26. data/spec/models/journaled/actor_uri_provider_spec.rb +6 -5
  27. data/spec/models/journaled/change_writer_spec.rb +10 -10
  28. data/spec/models/journaled/event_spec.rb +82 -6
  29. data/spec/models/journaled/writer_spec.rb +47 -15
  30. data/spec/rails_helper.rb +1 -2
  31. data/spec/spec_helper.rb +1 -3
  32. metadata +29 -84
  33. data/app/models/journaled/delivery.rb +0 -88
  34. data/config/routes.rb +0 -2
  35. data/lib/journaled/enqueue.rb +0 -13
  36. data/spec/dummy/config/environments/production.rb +0 -78
  37. data/spec/dummy/config/initializers/assets.rb +0 -8
  38. data/spec/dummy/db/migrate/20180606205114_create_delayed_jobs.rb +0 -18
  39. data/spec/support/delayed_job_spec_helper.rb +0 -11
@@ -18,7 +18,7 @@ RSpec.describe Journaled::Writer do
18
18
  journaled_schema_name: nil,
19
19
  journaled_attributes: {},
20
20
  journaled_partition_key: '',
21
- journaled_app_name: nil,
21
+ journaled_stream_name: nil,
22
22
  journaled_enqueue_opts: {},
23
23
  )
24
24
  end
@@ -34,7 +34,7 @@ RSpec.describe Journaled::Writer do
34
34
  journaled_schema_name: :fake_schema_name,
35
35
  journaled_attributes: { foo: :bar },
36
36
  journaled_partition_key: 'fake_partition_key',
37
- journaled_app_name: nil,
37
+ journaled_stream_name: nil,
38
38
  journaled_enqueue_opts: {},
39
39
  )
40
40
  end
@@ -75,21 +75,18 @@ RSpec.describe Journaled::Writer do
75
75
  journaled_schema_name: :fake_schema_name,
76
76
  journaled_attributes: journaled_event_attributes,
77
77
  journaled_partition_key: 'fake_partition_key',
78
- journaled_app_name: 'my_app',
78
+ journaled_stream_name: 'my_app_events',
79
79
  journaled_enqueue_opts: journaled_enqueue_opts,
80
+ tagged?: false,
80
81
  )
81
82
  end
82
83
 
83
- around do |example|
84
- with_jobs_delayed { example.run }
85
- end
86
-
87
84
  context 'when the journaled event does NOT comply with the base_event schema' do
88
85
  let(:journaled_event_attributes) { { foo: 1 } }
89
86
 
90
87
  it 'raises an error and does not enqueue anything' do
91
88
  expect { subject.journal! }.to raise_error JSON::Schema::ValidationError
92
- expect(Delayed::Job.where('handler like ?', '%Journaled::Delivery%').count).to eq 0
89
+ expect(enqueued_jobs.count).to eq 0
93
90
  end
94
91
  end
95
92
 
@@ -99,7 +96,7 @@ RSpec.describe Journaled::Writer do
99
96
 
100
97
  it 'raises an error and does not enqueue anything' do
101
98
  expect { subject.journal! }.to raise_error JSON::Schema::ValidationError
102
- expect(Delayed::Job.where('handler like ?', '%Journaled::Delivery%').count).to eq 0
99
+ expect(enqueued_jobs.count).to eq 0
103
100
  end
104
101
  end
105
102
 
@@ -107,9 +104,8 @@ RSpec.describe Journaled::Writer do
107
104
  let(:journaled_event_attributes) { { id: 'FAKE_UUID', event_type: 'fake_event', created_at: Time.zone.now, foo: :bar } }
108
105
 
109
106
  it 'creates a delivery with the app name passed through' do
110
- allow(Journaled::Delivery).to receive(:new).and_call_original
111
- subject.journal!
112
- expect(Journaled::Delivery).to have_received(:new).with(hash_including(app_name: 'my_app'))
107
+ expect { subject.journal! }.to change { enqueued_jobs.count }.from(0).to(1)
108
+ expect(enqueued_jobs.first[:args].first).to include('stream_name' => 'my_app_events')
113
109
  end
114
110
 
115
111
  context 'when there is no job priority specified in the enqueue opts' do
@@ -122,7 +118,11 @@ RSpec.describe Journaled::Writer do
122
118
 
123
119
  it 'defaults to the global default' do
124
120
  expect { subject.journal! }.to change {
125
- Delayed::Job.where('handler like ?', '%Journaled::Delivery%').where(priority: 999).count
121
+ if Rails::VERSION::MAJOR < 6
122
+ enqueued_jobs.select { |j| j[:job] == Journaled::DeliveryJob }.count
123
+ else
124
+ enqueued_jobs.select { |j| j['job_class'] == 'Journaled::DeliveryJob' && j['priority'] == 999 }.count
125
+ end
126
126
  }.from(0).to(1)
127
127
  end
128
128
  end
@@ -130,13 +130,45 @@ RSpec.describe Journaled::Writer do
130
130
  context 'when there is a job priority specified in the enqueue opts' do
131
131
  let(:journaled_enqueue_opts) { { priority: 13 } }
132
132
 
133
- it 'enqueues a Journaled::Delivery object with the given priority' do
133
+ it 'enqueues a Journaled::DeliveryJob with the given priority' do
134
134
  expect { subject.journal! }.to change {
135
- Delayed::Job.where('handler like ?', '%Journaled::Delivery%').where(priority: 13).count
135
+ if Rails::VERSION::MAJOR < 6
136
+ enqueued_jobs.select { |j| j[:job] == Journaled::DeliveryJob }.count
137
+ else
138
+ enqueued_jobs.select { |j| j['job_class'] == 'Journaled::DeliveryJob' && j['priority'] == 13 }.count
139
+ end
136
140
  }.from(0).to(1)
137
141
  end
138
142
  end
139
143
  end
140
144
  end
145
+
146
+ context 'when the event is tagged' do
147
+ before do
148
+ allow(journaled_event).to receive(:tagged?).and_return(true)
149
+ end
150
+
151
+ context 'and the "tags" attribute is not present' do
152
+ let(:journaled_event_attributes) do
153
+ { id: 'FAKE_UUID', event_type: 'fake_event', created_at: Time.zone.now, foo: 'bar' }
154
+ end
155
+
156
+ it 'raises an error and does not enqueue anything' do
157
+ expect { subject.journal! }.to raise_error JSON::Schema::ValidationError
158
+ expect(enqueued_jobs.count).to eq 0
159
+ end
160
+ end
161
+
162
+ context 'and the "tags" attribute is present' do
163
+ let(:journaled_event_attributes) do
164
+ { id: 'FAKE_UUID', event_type: 'fake_event', created_at: Time.zone.now, foo: 'bar', tags: { baz: 'bat' } }
165
+ end
166
+
167
+ it 'creates a delivery with the app name passed through' do
168
+ expect { subject.journal! }.to change { enqueued_jobs.count }.from(0).to(1)
169
+ expect(enqueued_jobs.first[:args].first).to include('stream_name' => 'my_app_events')
170
+ end
171
+ end
172
+ end
141
173
  end
142
174
  end
data/spec/rails_helper.rb CHANGED
@@ -6,7 +6,6 @@ require 'rspec/rails'
6
6
  require 'timecop'
7
7
  require 'webmock/rspec'
8
8
  require 'journaled/rspec'
9
- require 'pry-rails'
10
9
 
11
10
  Dir[Rails.root.join('..', 'support', '**', '*.rb')].each { |f| require f }
12
11
 
@@ -15,6 +14,6 @@ RSpec.configure do |config|
15
14
 
16
15
  config.infer_spec_type_from_file_location!
17
16
 
18
- config.include DelayedJobSpecHelper
17
+ config.include ActiveJob::TestHelper
19
18
  config.include EnvironmentSpecHelper
20
19
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,7 @@
1
- require 'delayed_job_active_record'
2
1
  rails_env = ENV['RAILS_ENV'] ||= 'test'
3
- db_adapter = ENV['DB_ADAPTER'] ||= 'postgresql'
4
2
  require File.expand_path('dummy/config/environment.rb', __dir__)
5
3
 
6
- Rails.configuration.database_configuration[db_adapter][rails_env].tap do |c|
4
+ Rails.configuration.database_configuration[rails_env].tap do |c|
7
5
  ActiveRecord::Tasks::DatabaseTasks.create(c)
8
6
  ActiveRecord::Base.establish_connection(c)
9
7
  load File.expand_path('dummy/db/schema.rb', __dir__)
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: 2.5.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Lipson
@@ -11,24 +11,10 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-02-02 00:00:00.000000000 Z
14
+ date: 2021-11-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: aws-sdk-kinesis
18
- requirement: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '2'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "<"
28
- - !ruby/object:Gem::Version
29
- version: '2'
30
- - !ruby/object:Gem::Dependency
31
- name: delayed_job
17
+ name: activejob
32
18
  requirement: !ruby/object:Gem::Requirement
33
19
  requirements:
34
20
  - - ">="
@@ -42,7 +28,7 @@ dependencies:
42
28
  - !ruby/object:Gem::Version
43
29
  version: '0'
44
30
  - !ruby/object:Gem::Dependency
45
- name: json-schema
31
+ name: activerecord
46
32
  requirement: !ruby/object:Gem::Requirement
47
33
  requirements:
48
34
  - - ">="
@@ -56,27 +42,21 @@ dependencies:
56
42
  - !ruby/object:Gem::Version
57
43
  version: '0'
58
44
  - !ruby/object:Gem::Dependency
59
- name: rails
45
+ name: aws-sdk-kinesis
60
46
  requirement: !ruby/object:Gem::Requirement
61
47
  requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: '5.1'
65
48
  - - "<"
66
49
  - !ruby/object:Gem::Version
67
- version: '7.0'
50
+ version: '2'
68
51
  type: :runtime
69
52
  prerelease: false
70
53
  version_requirements: !ruby/object:Gem::Requirement
71
54
  requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '5.1'
75
55
  - - "<"
76
56
  - !ruby/object:Gem::Version
77
- version: '7.0'
57
+ version: '2'
78
58
  - !ruby/object:Gem::Dependency
79
- name: request_store
59
+ name: json-schema
80
60
  requirement: !ruby/object:Gem::Requirement
81
61
  requirements:
82
62
  - - ">="
@@ -90,61 +70,33 @@ dependencies:
90
70
  - !ruby/object:Gem::Version
91
71
  version: '0'
92
72
  - !ruby/object:Gem::Dependency
93
- name: appraisal
73
+ name: railties
94
74
  requirement: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: 2.2.0
99
- type: :development
100
- prerelease: false
101
- version_requirements: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - "~>"
104
- - !ruby/object:Gem::Version
105
- version: 2.2.0
106
- - !ruby/object:Gem::Dependency
107
- name: delayed_job_active_record
108
- requirement: !ruby/object:Gem::Requirement
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- version: '0'
113
- type: :development
114
- prerelease: false
115
- version_requirements: !ruby/object:Gem::Requirement
116
75
  requirements:
117
76
  - - ">="
118
77
  - !ruby/object:Gem::Version
119
- version: '0'
120
- - !ruby/object:Gem::Dependency
121
- name: pg
122
- requirement: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- version: '0'
127
- type: :development
78
+ version: '5.2'
79
+ type: :runtime
128
80
  prerelease: false
129
81
  version_requirements: !ruby/object:Gem::Requirement
130
82
  requirements:
131
83
  - - ">="
132
84
  - !ruby/object:Gem::Version
133
- version: '0'
85
+ version: '5.2'
134
86
  - !ruby/object:Gem::Dependency
135
- name: pry-rails
87
+ name: appraisal
136
88
  requirement: !ruby/object:Gem::Requirement
137
89
  requirements:
138
- - - ">="
90
+ - - "~>"
139
91
  - !ruby/object:Gem::Version
140
- version: '0'
92
+ version: 2.2.0
141
93
  type: :development
142
94
  prerelease: false
143
95
  version_requirements: !ruby/object:Gem::Requirement
144
96
  requirements:
145
- - - ">="
97
+ - - "~>"
146
98
  - !ruby/object:Gem::Version
147
- version: '0'
99
+ version: 2.2.0
148
100
  - !ruby/object:Gem::Dependency
149
101
  name: rspec-rails
150
102
  requirement: !ruby/object:Gem::Requirement
@@ -216,19 +168,19 @@ dependencies:
216
168
  - !ruby/object:Gem::Version
217
169
  version: '0'
218
170
  - !ruby/object:Gem::Dependency
219
- name: sprockets
171
+ name: sqlite3
220
172
  requirement: !ruby/object:Gem::Requirement
221
173
  requirements:
222
- - - "<"
174
+ - - ">="
223
175
  - !ruby/object:Gem::Version
224
- version: '4.0'
176
+ version: '0'
225
177
  type: :development
226
178
  prerelease: false
227
179
  version_requirements: !ruby/object:Gem::Requirement
228
180
  requirements:
229
- - - "<"
181
+ - - ">="
230
182
  - !ruby/object:Gem::Version
231
- version: '4.0'
183
+ version: '0'
232
184
  - !ruby/object:Gem::Dependency
233
185
  name: timecop
234
186
  requirement: !ruby/object:Gem::Requirement
@@ -272,24 +224,25 @@ files:
272
224
  - README.md
273
225
  - Rakefile
274
226
  - app/controllers/concerns/journaled/actor.rb
227
+ - app/jobs/journaled/application_job.rb
228
+ - app/jobs/journaled/delivery_job.rb
275
229
  - app/models/concerns/journaled/changes.rb
276
230
  - app/models/journaled/actor_uri_provider.rb
277
231
  - app/models/journaled/change.rb
278
232
  - app/models/journaled/change_definition.rb
279
233
  - app/models/journaled/change_writer.rb
280
- - app/models/journaled/delivery.rb
281
234
  - app/models/journaled/event.rb
282
235
  - app/models/journaled/json_schema_model/validator.rb
283
236
  - app/models/journaled/not_truly_exceptional_error.rb
284
237
  - app/models/journaled/writer.rb
285
238
  - config/initializers/change_protection.rb
286
- - config/routes.rb
287
239
  - config/spring.rb
288
240
  - journaled_schemas/base_event.json
289
241
  - journaled_schemas/journaled/change.json
242
+ - journaled_schemas/tagged_event.json
290
243
  - lib/journaled.rb
244
+ - lib/journaled/current.rb
291
245
  - lib/journaled/engine.rb
292
- - lib/journaled/enqueue.rb
293
246
  - lib/journaled/relation_change_protection.rb
294
247
  - lib/journaled/rspec.rb
295
248
  - lib/journaled/version.rb
@@ -304,9 +257,7 @@ files:
304
257
  - spec/dummy/config/database.yml
305
258
  - spec/dummy/config/environment.rb
306
259
  - spec/dummy/config/environments/development.rb
307
- - spec/dummy/config/environments/production.rb
308
260
  - spec/dummy/config/environments/test.rb
309
- - spec/dummy/config/initializers/assets.rb
310
261
  - spec/dummy/config/initializers/backtrace_silencers.rb
311
262
  - spec/dummy/config/initializers/cookies_serializer.rb
312
263
  - spec/dummy/config/initializers/filter_parameter_logging.rb
@@ -317,25 +268,23 @@ files:
317
268
  - spec/dummy/config/locales/en.yml
318
269
  - spec/dummy/config/routes.rb
319
270
  - spec/dummy/config/secrets.yml
320
- - spec/dummy/db/migrate/20180606205114_create_delayed_jobs.rb
321
271
  - spec/dummy/db/schema.rb
322
272
  - spec/dummy/public/404.html
323
273
  - spec/dummy/public/422.html
324
274
  - spec/dummy/public/500.html
325
275
  - spec/dummy/public/favicon.ico
276
+ - spec/jobs/journaled/delivery_job_spec.rb
326
277
  - spec/lib/journaled_spec.rb
327
278
  - spec/models/concerns/journaled/actor_spec.rb
328
279
  - spec/models/concerns/journaled/changes_spec.rb
329
280
  - spec/models/database_change_protection_spec.rb
330
281
  - spec/models/journaled/actor_uri_provider_spec.rb
331
282
  - spec/models/journaled/change_writer_spec.rb
332
- - spec/models/journaled/delivery_spec.rb
333
283
  - spec/models/journaled/event_spec.rb
334
284
  - spec/models/journaled/json_schema_model/validator_spec.rb
335
285
  - spec/models/journaled/writer_spec.rb
336
286
  - spec/rails_helper.rb
337
287
  - spec/spec_helper.rb
338
- - spec/support/delayed_job_spec_helper.rb
339
288
  - spec/support/environment_spec_helper.rb
340
289
  homepage: http://github.com/Betterment/journaled
341
290
  licenses:
@@ -356,7 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
356
305
  - !ruby/object:Gem::Version
357
306
  version: '0'
358
307
  requirements: []
359
- rubygems_version: 3.1.2
308
+ rubygems_version: 3.0.1
360
309
  signing_key:
361
310
  specification_version: 4
362
311
  summary: Journaling for Betterment apps.
@@ -368,7 +317,6 @@ test_files:
368
317
  - spec/dummy/config/secrets.yml
369
318
  - spec/dummy/config/routes.rb
370
319
  - spec/dummy/config/locales/en.yml
371
- - spec/dummy/config/environments/production.rb
372
320
  - spec/dummy/config/environments/development.rb
373
321
  - spec/dummy/config/environments/test.rb
374
322
  - spec/dummy/config/environment.rb
@@ -380,7 +328,6 @@ test_files:
380
328
  - spec/dummy/config/initializers/filter_parameter_logging.rb
381
329
  - spec/dummy/config/initializers/session_store.rb
382
330
  - spec/dummy/config/initializers/wrap_parameters.rb
383
- - spec/dummy/config/initializers/assets.rb
384
331
  - spec/dummy/config/initializers/cookies_serializer.rb
385
332
  - spec/dummy/config/initializers/inflections.rb
386
333
  - spec/dummy/config.ru
@@ -390,18 +337,16 @@ test_files:
390
337
  - spec/dummy/public/500.html
391
338
  - spec/dummy/public/404.html
392
339
  - spec/dummy/db/schema.rb
393
- - spec/dummy/db/migrate/20180606205114_create_delayed_jobs.rb
394
340
  - spec/dummy/README.rdoc
395
341
  - spec/models/journaled/json_schema_model/validator_spec.rb
396
342
  - spec/models/journaled/actor_uri_provider_spec.rb
397
- - spec/models/journaled/delivery_spec.rb
398
343
  - spec/models/journaled/event_spec.rb
399
344
  - spec/models/journaled/change_writer_spec.rb
400
345
  - spec/models/journaled/writer_spec.rb
401
346
  - spec/models/database_change_protection_spec.rb
402
347
  - spec/models/concerns/journaled/changes_spec.rb
403
348
  - spec/models/concerns/journaled/actor_spec.rb
404
- - spec/support/delayed_job_spec_helper.rb
405
349
  - spec/support/environment_spec_helper.rb
406
350
  - spec/lib/journaled_spec.rb
351
+ - spec/jobs/journaled/delivery_job_spec.rb
407
352
  - spec/rails_helper.rb
@@ -1,88 +0,0 @@
1
- class Journaled::Delivery # rubocop:disable Betterment/ActiveJobPerformable
2
- DEFAULT_REGION = 'us-east-1'.freeze
3
-
4
- def initialize(serialized_event:, partition_key:, app_name:)
5
- @serialized_event = serialized_event
6
- @partition_key = partition_key
7
- @app_name = app_name
8
- end
9
-
10
- def perform
11
- kinesis_client.put_record record if Journaled.enabled?
12
- rescue Aws::Kinesis::Errors::InternalFailure, Aws::Kinesis::Errors::ServiceUnavailable, Aws::Kinesis::Errors::Http503Error => e
13
- Rails.logger.error "Kinesis Error - Server Error occurred - #{e.class}"
14
- raise KinesisTemporaryFailure
15
- rescue Seahorse::Client::NetworkingError => e
16
- Rails.logger.error "Kinesis Error - Networking Error occurred - #{e.class}"
17
- raise KinesisTemporaryFailure
18
- end
19
-
20
- def stream_name
21
- env_var_name = [app_name&.upcase, 'JOURNALED_STREAM_NAME'].compact.join('_')
22
- ENV.fetch(env_var_name)
23
- end
24
-
25
- def kinesis_client_config
26
- {
27
- region: ENV.fetch('AWS_DEFAULT_REGION', DEFAULT_REGION),
28
- retry_limit: 0,
29
- http_idle_timeout: Journaled.http_idle_timeout,
30
- http_open_timeout: Journaled.http_open_timeout,
31
- http_read_timeout: Journaled.http_read_timeout,
32
- }.merge(credentials)
33
- end
34
-
35
- private
36
-
37
- attr_reader :serialized_event, :partition_key, :app_name
38
-
39
- def record
40
- {
41
- stream_name: stream_name,
42
- data: serialized_event,
43
- partition_key: partition_key,
44
- }
45
- end
46
-
47
- def kinesis_client
48
- Aws::Kinesis::Client.new(kinesis_client_config)
49
- end
50
-
51
- def credentials
52
- if ENV.key?('JOURNALED_IAM_ROLE_ARN')
53
- {
54
- credentials: iam_assume_role_credentials,
55
- }
56
- else
57
- legacy_credentials_hash_if_present
58
- end
59
- end
60
-
61
- def legacy_credentials_hash_if_present
62
- if ENV.key?('RUBY_AWS_ACCESS_KEY_ID')
63
- {
64
- access_key_id: ENV.fetch('RUBY_AWS_ACCESS_KEY_ID'),
65
- secret_access_key: ENV.fetch('RUBY_AWS_SECRET_ACCESS_KEY'),
66
- }
67
- else
68
- {}
69
- end
70
- end
71
-
72
- def sts_client
73
- Aws::STS::Client.new({
74
- region: ENV.fetch('AWS_DEFAULT_REGION', DEFAULT_REGION),
75
- }.merge(legacy_credentials_hash_if_present))
76
- end
77
-
78
- def iam_assume_role_credentials
79
- @iam_assume_role_credentials ||= Aws::AssumeRoleCredentials.new(
80
- client: sts_client,
81
- role_arn: ENV.fetch('JOURNALED_IAM_ROLE_ARN'),
82
- role_session_name: "JournaledAssumeRoleAccess",
83
- )
84
- end
85
-
86
- class KinesisTemporaryFailure < NotTrulyExceptionalError
87
- end
88
- end
data/config/routes.rb DELETED
@@ -1,2 +0,0 @@
1
- Rails.application.routes.draw do
2
- end
@@ -1,13 +0,0 @@
1
- module Journaled
2
- class << self
3
- def enqueue!(*args)
4
- delayed_job_enqueue(*args)
5
- end
6
-
7
- private
8
-
9
- def delayed_job_enqueue(*args, **opts)
10
- Delayed::Job.enqueue(*args, **opts.reverse_merge(priority: Journaled.job_priority))
11
- end
12
- end
13
- end
@@ -1,78 +0,0 @@
1
- Rails.application.configure do
2
- # Settings specified here will take precedence over those in config/application.rb.
3
-
4
- # Code is not reloaded between requests.
5
- config.cache_classes = true
6
-
7
- # Eager load code on boot. This eager loads most of Rails and
8
- # your application in memory, allowing both threaded web servers
9
- # and those relying on copy on write to perform better.
10
- # Rake tasks automatically ignore this option for performance.
11
- config.eager_load = true
12
-
13
- # Full error reports are disabled and caching is turned on.
14
- config.consider_all_requests_local = false
15
- config.action_controller.perform_caching = true
16
-
17
- # Enable Rack::Cache to put a simple HTTP cache in front of your application
18
- # Add `rack-cache` to your Gemfile before enabling this.
19
- # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
20
- # config.action_dispatch.rack_cache = true
21
-
22
- # Disable Rails's static asset server (Apache or nginx will already do this).
23
- config.serve_static_assets = false
24
-
25
- # Compress JavaScripts and CSS.
26
- config.assets.js_compressor = :uglifier
27
- # config.assets.css_compressor = :sass
28
-
29
- # Do not fallback to assets pipeline if a precompiled asset is missed.
30
- config.assets.compile = false
31
-
32
- # Generate digests for assets URLs.
33
- config.assets.digest = true
34
-
35
- # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
36
-
37
- # Specifies the header that your server uses for sending files.
38
- # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
39
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
40
-
41
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
42
- # config.force_ssl = true
43
-
44
- # Set to :debug to see everything in the log.
45
- config.log_level = :info
46
-
47
- # Prepend all log lines with the following tags.
48
- # config.log_tags = [ :subdomain, :uuid ]
49
-
50
- # Use a different logger for distributed setups.
51
- # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
52
-
53
- # Use a different cache store in production.
54
- # config.cache_store = :mem_cache_store
55
-
56
- # Enable serving of images, stylesheets, and JavaScripts from an asset server.
57
- # config.action_controller.asset_host = "http://assets.example.com"
58
-
59
- # Ignore bad email addresses and do not raise email delivery errors.
60
- # Set this to true and configure the email server for immediate delivery to raise delivery errors.
61
- # config.action_mailer.raise_delivery_errors = false
62
-
63
- # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
64
- # the I18n.default_locale when a translation cannot be found).
65
- config.i18n.fallbacks = true
66
-
67
- # Send deprecation notices to registered listeners.
68
- config.active_support.deprecation = :notify
69
-
70
- # Disable automatic flushing of the log to improve performance.
71
- # config.autoflush_log = false
72
-
73
- # Use default logging formatter so that PID and timestamp are not suppressed.
74
- config.log_formatter = ::Logger::Formatter.new
75
-
76
- # Do not dump schema after migrations.
77
- config.active_record.dump_schema_after_migration = false
78
- end
@@ -1,8 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Version of your assets, change this if you want to expire all your assets.
4
- Rails.application.config.assets.version = '1.0'
5
-
6
- # Precompile additional assets.
7
- # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8
- # Rails.application.config.assets.precompile += %w( search.js )
@@ -1,18 +0,0 @@
1
- class CreateDelayedJobs < ActiveRecord::Migration[5.1]
2
- def change
3
- create_table :delayed_jobs do |t|
4
- t.integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue
5
- t.integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually.
6
- t.text :handler, null: false # YAML-encoded string of the object that will do work
7
- t.text :last_error # reason for last failure (See Note below)
8
- t.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future.
9
- t.datetime :locked_at # Set when a client is working on this object
10
- t.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead)
11
- t.string :locked_by # Who is working on this object (if locked)
12
- t.string :queue # The name of the queue this job is in
13
- t.timestamps null: true
14
- end
15
-
16
- add_index :delayed_jobs, [:priority, :run_at], name: "delayed_jobs_priority"
17
- end
18
- end
@@ -1,11 +0,0 @@
1
- module DelayedJobSpecHelper
2
- def with_jobs_delayed(opts = {})
3
- work_off = opts.fetch(:work_off, true)
4
- original = Delayed::Worker.delay_jobs
5
- Delayed::Worker.delay_jobs = true
6
- yield
7
- ensure
8
- Delayed::Worker.delay_jobs = original
9
- Delayed::Worker.new.work_off if work_off
10
- end
11
- end