loga 2.2.0 → 2.3.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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -0
  3. data/.codeclimate.yml +3 -1
  4. data/.gitignore +2 -0
  5. data/.rubocop.yml +29 -2
  6. data/Appraisals +4 -0
  7. data/CHANGELOG.md +4 -0
  8. data/Guardfile +14 -0
  9. data/README.md +4 -0
  10. data/gemfiles/sidekiq51.gemfile +11 -0
  11. data/lib/loga.rb +4 -3
  12. data/lib/loga/ext/core/tempfile.rb +1 -1
  13. data/lib/loga/formatters/simple_formatter.rb +1 -3
  14. data/lib/loga/rack/request.rb +2 -2
  15. data/lib/loga/sidekiq.rb +16 -0
  16. data/lib/loga/sidekiq/job_logger.rb +62 -0
  17. data/lib/loga/utilities.rb +1 -1
  18. data/lib/loga/version.rb +1 -1
  19. data/loga.gemspec +4 -2
  20. data/spec/fixtures/rails32.rb +1 -0
  21. data/spec/integration/rails/railtie_spec.rb +9 -8
  22. data/spec/integration/rails/request_spec.rb +2 -2
  23. data/spec/integration/sidekiq_spec.rb +131 -0
  24. data/spec/integration/sinatra_spec.rb +17 -16
  25. data/spec/loga/sidekiq/job_logger_spec.rb +115 -0
  26. data/spec/loga/sidekiq_spec.rb +53 -0
  27. data/spec/spec_helper.rb +21 -0
  28. data/spec/support/helpers.rb +8 -1
  29. data/spec/support/request_spec.rb +4 -4
  30. data/spec/support/timecop_shared.rb +1 -0
  31. data/spec/unit/loga/configuration_spec.rb +7 -4
  32. data/spec/unit/loga/event_spec.rb +2 -2
  33. data/spec/unit/loga/formatters/gelf_formatter_spec.rb +7 -5
  34. data/spec/unit/loga/formatters/simple_formatter_spec.rb +3 -0
  35. data/spec/unit/loga/log_subscribers/action_mailer_spec.rb +14 -13
  36. data/spec/unit/loga/parameter_filter_spec.rb +1 -1
  37. data/spec/unit/loga/rack/logger_spec.rb +10 -6
  38. data/spec/unit/loga/rack/request_spec.rb +4 -3
  39. data/spec/unit/loga/utilities_spec.rb +3 -3
  40. data/spec/unit/loga_spec.rb +6 -3
  41. metadata +44 -7
@@ -20,6 +20,7 @@ describe Loga::Formatters::SimpleFormatter do
20
20
 
21
21
  context 'when the message parameter is a nil' do
22
22
  let(:message) { nil }
23
+
23
24
  specify do
24
25
  expect(subject).to eq("I, #{time_pid} nil\n")
25
26
  end
@@ -100,7 +101,9 @@ describe Loga::Formatters::SimpleFormatter do
100
101
  let(:tags) { %w[USER_54321 EmailWorker] }
101
102
 
102
103
  before do
104
+ # rubocop:disable RSpec/AnyInstance
103
105
  allow_any_instance_of(described_class).to receive(:current_tags).and_return(tags)
106
+ # rubocop:enable RSpec/AnyInstance
104
107
  end
105
108
 
106
109
  specify do
@@ -5,14 +5,15 @@ require 'loga/log_subscribers/action_mailer'
5
5
  RSpec.describe Loga::LogSubscribers::ActionMailer do
6
6
  subject(:mailer) { described_class.new }
7
7
 
8
- let(:event) do
9
- double('event', payload: payload, duration: 0.0001, time: Time.now)
10
- end
8
+ before { stub_loga }
11
9
 
12
- before do
13
- Loga.reset
14
-
15
- Loga.configure(service_name: 'hello_world_app')
10
+ let(:event) do
11
+ instance_double(
12
+ 'ActiveSupport::Notifications::Event',
13
+ payload: payload,
14
+ duration: 0.0001,
15
+ time: Time.now,
16
+ )
16
17
  end
17
18
 
18
19
  describe '#deliver' do
@@ -25,9 +26,9 @@ RSpec.describe Loga::LogSubscribers::ActionMailer do
25
26
  end
26
27
 
27
28
  it 'logs an info message' do
28
- expect(Loga.logger).to receive(:info).with(kind_of(Loga::Event))
29
-
29
+ allow(Loga.logger).to receive(:info)
30
30
  mailer.deliver(event)
31
+ expect(Loga.logger).to have_received(:info).with(kind_of(Loga::Event))
31
32
  end
32
33
  end
33
34
  end
@@ -42,9 +43,9 @@ RSpec.describe Loga::LogSubscribers::ActionMailer do
42
43
  end
43
44
 
44
45
  it 'logs an info message' do
45
- expect(Loga.logger).to receive(:debug).with(kind_of(Loga::Event))
46
-
46
+ allow(Loga.logger).to receive(:debug)
47
47
  mailer.process(event)
48
+ expect(Loga.logger).to have_received(:debug).with(kind_of(Loga::Event))
48
49
  end
49
50
  end
50
51
  end
@@ -60,9 +61,9 @@ RSpec.describe Loga::LogSubscribers::ActionMailer do
60
61
  end
61
62
 
62
63
  it 'logs an info message' do
63
- expect(Loga.logger).to receive(:info).with(kind_of(Loga::Event))
64
-
64
+ allow(Loga.logger).to receive(:info)
65
65
  mailer.receive(event)
66
+ expect(Loga.logger).to have_received(:info).with(kind_of(Loga::Event))
66
67
  end
67
68
  end
68
69
  end
@@ -11,8 +11,8 @@ RSpec.describe Loga::ParameterFilter do
11
11
  end
12
12
 
13
13
  it 'compiles filters only once' do
14
- expect(compiled_filters).to receive(:compile).once
15
14
  2.times { subject.filter(params) }
15
+ expect(compiled_filters).to have_received(:compile).once
16
16
  end
17
17
  end
18
18
 
@@ -1,7 +1,10 @@
1
1
  require 'spec_helper'
2
2
  require 'rack/test'
3
3
 
4
+ # rubocop:disable RSpec/SubjectStub, RSpec/MessageSpies, RSpec/VerifiedDoubles
4
5
  describe Loga::Rack::Logger do
6
+ subject { described_class.new(app) }
7
+
5
8
  let(:env) { Rack::MockRequest.env_for('/about_us?limit=1', options) }
6
9
  let(:options) { {} }
7
10
  let(:app) { ->(_env) { [response_status, {}, ''] } }
@@ -18,8 +21,6 @@ describe Loga::Rack::Logger do
18
21
  )
19
22
  end
20
23
 
21
- subject { described_class.new(app) }
22
-
23
24
  before { Loga.instance_variable_set(:@configuration, configuration) }
24
25
 
25
26
  shared_examples 'logs the event' do |details|
@@ -54,8 +55,9 @@ describe Loga::Rack::Logger do
54
55
  end
55
56
 
56
57
  it "logs the Loga::Event with severity #{details[:level]}" do
57
- expect(logger).to receive(level).with(an_instance_of(Loga::Event))
58
+ allow(logger).to receive(level)
58
59
  subject.call(env)
60
+ expect(logger).to have_received(level).with(an_instance_of(Loga::Event))
59
61
  end
60
62
  end
61
63
 
@@ -96,7 +98,7 @@ describe Loga::Rack::Logger do
96
98
  include_examples 'logs the event', level: :info
97
99
  end
98
100
 
99
- context 'when the exception is on rack.exception', focus: true do
101
+ context 'when the exception is on rack.exception' do
100
102
  let(:response_status) { 500 }
101
103
  let(:exception) { StandardError }
102
104
  let(:logged_exception) { exception }
@@ -124,12 +126,14 @@ describe Loga::Rack::Logger do
124
126
  let(:tags) { [:foo] }
125
127
 
126
128
  it 'yields the app with tags' do
127
- expect(logger).to receive(:tagged).with(:tag) do |&block|
129
+ allow(logger).to receive(:tagged)
130
+ subject.call(env)
131
+ expect(logger).to have_received(:tagged).with(:tag) do |&block|
128
132
  expect(block.call).to eq(:response)
129
133
  end
130
- subject.call(env)
131
134
  end
132
135
  end
133
136
  end
134
137
  end
135
138
  end
139
+ # rubocop:enable RSpec/SubjectStub, RSpec/MessageSpies, RSpec/VerifiedDoubles
@@ -1,6 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Loga::Rack::Request do
4
+ subject { described_class.new(env) }
5
+
4
6
  let(:options) { {} }
5
7
  let(:full_path) { '/' }
6
8
  let(:env) { Rack::MockRequest.env_for(full_path, options) }
@@ -23,8 +25,6 @@ describe Loga::Rack::Request do
23
25
  allow(Loga).to receive(:configuration).and_return(config)
24
26
  end
25
27
 
26
- subject { described_class.new(env) }
27
-
28
28
  describe '#uuid' do
29
29
  let(:action_dispatch_request_id) { 'ABCD' }
30
30
 
@@ -32,6 +32,7 @@ describe Loga::Rack::Request do
32
32
  let(:options) do
33
33
  { 'action_dispatch.request_id' => action_dispatch_request_id }
34
34
  end
35
+
35
36
  it 'returns the middleware value' do
36
37
  expect(subject.uuid).to eq(action_dispatch_request_id)
37
38
  end
@@ -90,7 +91,7 @@ describe Loga::Rack::Request do
90
91
 
91
92
  let(:options) { { 'loga.request.original_path' => path } }
92
93
 
93
- context 'request with sensitive parameters' do
94
+ describe 'request with sensitive parameters' do
94
95
  it 'returns the path with sensitive parameters filtered' do
95
96
  expect(subject.filtered_full_path).to eq('/hello?password=[FILTERED]&color=red')
96
97
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Loga::Utilities do
4
- subject { Object.new.extend(Loga::Utilities) }
4
+ subject { Object.new.extend(described_class) }
5
5
 
6
6
  describe 'duration_in_ms#(started_at, ended_at)' do
7
+ subject { super().duration_in_ms(start_time, end_time) }
8
+
7
9
  let(:start_time) { Time.new(2002, 10, 31, 2, 2, 2.0) }
8
10
  let(:end_time) { Time.new(2002, 10, 31, 2, 2, 2.6789) }
9
11
 
10
- subject { super().duration_in_ms(start_time, end_time) }
11
-
12
12
  it 'calculates elapsed time rounding the nearest millisecond' do
13
13
  expect(subject).to eq(679)
14
14
  end
@@ -12,15 +12,17 @@ describe Loga do
12
12
 
13
13
  describe '.configure' do
14
14
  it 'configures Loga' do
15
- expect(Loga::Configuration).to receive(:new).with(options, {}).and_call_original
15
+ allow(Loga::Configuration).to receive(:new).and_call_original
16
16
  subject.configure(options)
17
+ expect(Loga::Configuration).to have_received(:new).with(options, {})
17
18
  end
18
19
 
19
20
  context 'when framework options provided' do
20
21
  it 'configures Loga' do
21
- expect(Loga::Configuration)
22
- .to receive(:new).with(options, framework_options).and_call_original
22
+ allow(Loga::Configuration).to receive(:new).and_call_original
23
23
  subject.configure(options, framework_options)
24
+ expect(Loga::Configuration).to have_received(:new)
25
+ .with(options, framework_options)
24
26
  end
25
27
  end
26
28
 
@@ -61,6 +63,7 @@ describe Loga do
61
63
 
62
64
  context 'when Loga is configured' do
63
65
  before { subject.configure(options) }
66
+
64
67
  specify { expect(subject.logger).to be_kind_of(Logger) }
65
68
  end
66
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loga
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Funding Circle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-15 00:00:00.000000000 Z
11
+ date: 2018-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -164,34 +164,62 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: fakeredis
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rspec
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - "~>"
172
186
  - !ruby/object:Gem::Version
173
- version: 3.6.0
187
+ version: 3.7.0
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - "~>"
179
193
  - !ruby/object:Gem::Version
180
- version: 3.6.0
194
+ version: 3.7.0
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: rubocop
183
197
  requirement: !ruby/object:Gem::Requirement
184
198
  requirements:
185
199
  - - "~>"
186
200
  - !ruby/object:Gem::Version
187
- version: 0.50.0
201
+ version: 0.57.0
188
202
  type: :development
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
- version: 0.50.0
208
+ version: 0.57.0
209
+ - !ruby/object:Gem::Dependency
210
+ name: rubocop-rspec
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
195
223
  - !ruby/object:Gem::Dependency
196
224
  name: timecop
197
225
  requirement: !ruby/object:Gem::Requirement
@@ -231,6 +259,7 @@ files:
231
259
  - gemfiles/rails42.gemfile
232
260
  - gemfiles/rails50.gemfile
233
261
  - gemfiles/rails52.gemfile
262
+ - gemfiles/sidekiq51.gemfile
234
263
  - gemfiles/sinatra14.gemfile
235
264
  - gemfiles/unit.gemfile
236
265
  - lib/loga.rb
@@ -249,6 +278,8 @@ files:
249
278
  - lib/loga/rack/request_id.rb
250
279
  - lib/loga/railtie.rb
251
280
  - lib/loga/service_version_strategies.rb
281
+ - lib/loga/sidekiq.rb
282
+ - lib/loga/sidekiq/job_logger.rb
252
283
  - lib/loga/tagged_logging.rb
253
284
  - lib/loga/utilities.rb
254
285
  - lib/loga/version.rb
@@ -263,7 +294,10 @@ files:
263
294
  - spec/integration/rails/action_mailer_spec.rb
264
295
  - spec/integration/rails/railtie_spec.rb
265
296
  - spec/integration/rails/request_spec.rb
297
+ - spec/integration/sidekiq_spec.rb
266
298
  - spec/integration/sinatra_spec.rb
299
+ - spec/loga/sidekiq/job_logger_spec.rb
300
+ - spec/loga/sidekiq_spec.rb
267
301
  - spec/spec_helper.rb
268
302
  - spec/support/gethostname_shared.rb
269
303
  - spec/support/helpers.rb
@@ -300,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
300
334
  version: '0'
301
335
  requirements: []
302
336
  rubyforge_project:
303
- rubygems_version: 2.7.6
337
+ rubygems_version: 2.7.7
304
338
  signing_key:
305
339
  specification_version: 4
306
340
  summary: Facilitate log aggregation via unified logging
@@ -315,7 +349,10 @@ test_files:
315
349
  - spec/integration/rails/action_mailer_spec.rb
316
350
  - spec/integration/rails/railtie_spec.rb
317
351
  - spec/integration/rails/request_spec.rb
352
+ - spec/integration/sidekiq_spec.rb
318
353
  - spec/integration/sinatra_spec.rb
354
+ - spec/loga/sidekiq/job_logger_spec.rb
355
+ - spec/loga/sidekiq_spec.rb
319
356
  - spec/spec_helper.rb
320
357
  - spec/support/gethostname_shared.rb
321
358
  - spec/support/helpers.rb