journaled 2.5.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
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