loga 1.3.0 → 1.4.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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +4 -0
  3. data/circle.yml +4 -4
  4. data/gemfiles/rails50.gemfile +11 -0
  5. data/lib/loga/ext/rails/rack/{logger4.rb → logger.rb} +0 -0
  6. data/lib/loga/rack/logger.rb +1 -0
  7. data/lib/loga/rack/request.rb +11 -0
  8. data/lib/loga/railtie.rb +12 -3
  9. data/lib/loga/version.rb +1 -1
  10. data/loga.gemspec +2 -7
  11. data/spec/fixtures/README.md +5 -2
  12. data/spec/fixtures/rails50/Rakefile +6 -0
  13. data/spec/fixtures/rails50/app/controllers/application_controller.rb +28 -0
  14. data/spec/fixtures/rails50/app/helpers/application_helper.rb +2 -0
  15. data/spec/fixtures/rails50/app/views/layouts/application.html.erb +13 -0
  16. data/spec/fixtures/rails50/app/views/user.html.erb +1 -0
  17. data/spec/fixtures/rails50/bin/bundle +3 -0
  18. data/spec/fixtures/rails50/bin/rails +4 -0
  19. data/spec/fixtures/rails50/bin/rake +4 -0
  20. data/spec/fixtures/rails50/bin/setup +34 -0
  21. data/spec/fixtures/rails50/bin/update +29 -0
  22. data/spec/fixtures/rails50/config.ru +5 -0
  23. data/spec/fixtures/rails50/config/application.rb +34 -0
  24. data/spec/fixtures/rails50/config/boot.rb +3 -0
  25. data/spec/fixtures/rails50/config/cable.yml +9 -0
  26. data/spec/fixtures/rails50/config/environment.rb +5 -0
  27. data/spec/fixtures/rails50/config/environments/development.rb +44 -0
  28. data/spec/fixtures/rails50/config/environments/production.rb +75 -0
  29. data/spec/fixtures/rails50/config/environments/test.rb +42 -0
  30. data/spec/fixtures/rails50/config/initializers/application_controller_renderer.rb +6 -0
  31. data/spec/fixtures/rails50/config/initializers/backtrace_silencers.rb +7 -0
  32. data/spec/fixtures/rails50/config/initializers/cookies_serializer.rb +5 -0
  33. data/spec/fixtures/rails50/config/initializers/filter_parameter_logging.rb +4 -0
  34. data/spec/fixtures/rails50/config/initializers/inflections.rb +16 -0
  35. data/spec/fixtures/rails50/config/initializers/mime_types.rb +4 -0
  36. data/spec/fixtures/rails50/config/initializers/new_framework_defaults.rb +21 -0
  37. data/spec/fixtures/rails50/config/initializers/session_store.rb +3 -0
  38. data/spec/fixtures/rails50/config/initializers/wrap_parameters.rb +9 -0
  39. data/spec/fixtures/rails50/config/locales/en.yml +23 -0
  40. data/spec/fixtures/rails50/config/puma.rb +47 -0
  41. data/spec/fixtures/rails50/config/routes.rb +9 -0
  42. data/spec/fixtures/rails50/config/secrets.yml +23 -0
  43. data/spec/fixtures/rails50/public/404.html +67 -0
  44. data/spec/fixtures/rails50/public/422.html +67 -0
  45. data/spec/fixtures/rails50/public/500.html +66 -0
  46. data/spec/fixtures/rails50/public/apple-touch-icon-precomposed.png +0 -0
  47. data/spec/fixtures/rails50/public/apple-touch-icon.png +0 -0
  48. data/spec/fixtures/rails50/public/favicon.ico +0 -0
  49. data/spec/fixtures/rails50/public/robots.txt +5 -0
  50. data/spec/integration/rails/railtie_spec.rb +25 -0
  51. data/spec/integration/rails/request_spec.rb +23 -8
  52. data/spec/integration/sinatra_spec.rb +5 -0
  53. data/spec/support/request_spec.rb +5 -5
  54. data/spec/unit/loga/rack/request_spec.rb +48 -0
  55. metadata +79 -2
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-agent: *
5
+ # Disallow: /
@@ -60,5 +60,30 @@ RSpec.describe Loga::Railtie do
60
60
  end
61
61
  end
62
62
  end
63
+
64
+ context 'ActionController' do
65
+ [
66
+ 'exist_fragment?.action_controller',
67
+ 'expire_fragment.action_controller',
68
+ 'expire_page.action_controller',
69
+ 'halted_callback.action_controller',
70
+ 'logger.action_controller',
71
+ 'process_action.action_controller',
72
+ 'read_fragment.action_controller',
73
+ 'redirect_to.action_controller',
74
+ 'send_data.action_controller',
75
+ 'send_file.action_controller',
76
+ 'start_processing.action_controller',
77
+ 'unpermitted_parameters.action_controller',
78
+ 'write_fragment.action_controller',
79
+ 'write_page.action_controller',
80
+ ].each do |notification|
81
+ let(:notification) { notification }
82
+
83
+ it 'removes ActionController::LogSubscriber' do
84
+ expect(subscribers).to_not include(ActionController::LogSubscriber)
85
+ end
86
+ end
87
+ end
63
88
  end
64
89
  end
@@ -26,17 +26,32 @@ describe 'Integration with Rails', timecop: true do
26
26
  expect(json_response).to eq('action' => 'show', 'controller' => 'application')
27
27
  end
28
28
 
29
- context 'when a template is rendered' do
30
- let(:action_view_notifications) do
31
- json_entries.select { |e| e.to_json =~ /Rendered/ }
32
- end
29
+ it 'includes the controller name and action' do
30
+ get '/ok'
31
+ expect(json).to include('_request.controller' => 'ApplicationController#ok')
32
+ end
33
+
34
+ describe 'LogSubscriber' do
35
+ context 'ActionController' do
36
+ let(:action_controller_notifications) do
37
+ json_entries.select { |e| e.to_json =~ /Processing by|Completed/ }
38
+ end
33
39
 
34
- before { put '/users/5' }
40
+ it 'silences ActionController::LogSubscriber' do
41
+ get '/show'
42
+ expect(action_controller_notifications).to be_empty
43
+ end
44
+ end
35
45
 
36
- specify { expect(last_response.status).to eq(200) }
46
+ context 'ActionView' do
47
+ let(:action_view_notifications) do
48
+ json_entries.select { |e| e.to_json =~ /Rendered/ }
49
+ end
37
50
 
38
- it 'silences ActionView::LogSubscriber' do
39
- expect(action_view_notifications).to be_empty
51
+ it 'silences ActionView::LogSubscriber' do
52
+ put '/users/5'
53
+ expect(action_view_notifications).to be_empty
54
+ end
40
55
  end
41
56
  end
42
57
 
@@ -51,4 +51,9 @@ describe 'Rack request logger with Sinatra', timecop: true do
51
51
  end
52
52
 
53
53
  include_examples 'request logger'
54
+
55
+ it 'does not include the controller name and action' do
56
+ get '/ok'
57
+ expect(json).to_not include('_request.controller')
58
+ end
54
59
  end
@@ -5,7 +5,7 @@ RSpec.shared_examples 'request logger' do
5
5
  { username: 'yoshi' },
6
6
  'HTTP_USER_AGENT' => 'Chrome', 'HTTP_X_REQUEST_ID' => '471a34dc'
7
7
 
8
- expect(json).to match(
8
+ expect(json).to include(
9
9
  'version' => '1.1',
10
10
  'host' => 'bird.example.com',
11
11
  'short_message' => 'GET /ok?username=yoshi 200 in 0ms',
@@ -35,7 +35,7 @@ RSpec.shared_examples 'request logger' do
35
35
  { email: 'hello@world.com' },
36
36
  'HTTP_USER_AGENT' => 'Chrome', 'HTTP_X_REQUEST_ID' => '471a34dc'
37
37
 
38
- expect(json).to match(
38
+ expect(json).to include(
39
39
  'version' => '1.1',
40
40
  'host' => 'bird.example.com',
41
41
  'short_message' => 'POST /users?username=yoshi 200 in 0ms',
@@ -66,7 +66,7 @@ RSpec.shared_examples 'request logger' do
66
66
  it 'specifies the original path' do
67
67
  get '/new', {}, 'HTTP_USER_AGENT' => 'Chrome', 'HTTP_X_REQUEST_ID' => '471a34dc'
68
68
 
69
- expect(json).to match(
69
+ expect(json).to include(
70
70
  'version' => '1.1',
71
71
  'host' => 'bird.example.com',
72
72
  'short_message' => 'GET /new 302 in 0ms',
@@ -94,7 +94,7 @@ RSpec.shared_examples 'request logger' do
94
94
  { username: 'yoshi' },
95
95
  'HTTP_USER_AGENT' => 'Chrome', 'HTTP_X_REQUEST_ID' => '471a34dc'
96
96
 
97
- expect(json).to match(
97
+ expect(json).to include(
98
98
  'version' => '1.1',
99
99
  'host' => 'bird.example.com',
100
100
  'short_message' => 'GET /error?username=yoshi 500 in 0ms',
@@ -123,7 +123,7 @@ RSpec.shared_examples 'request logger' do
123
123
  it 'does not log the framework exception' do
124
124
  get '/not_found', {}, 'HTTP_X_REQUEST_ID' => '471a34dc'
125
125
 
126
- expect(json).to match(
126
+ expect(json).to include(
127
127
  'version' => '1.1',
128
128
  'host' => 'bird.example.com',
129
129
  'short_message' => 'GET /not_found 404 in 0ms',
@@ -5,6 +5,14 @@ describe Loga::Rack::Request do
5
5
  let(:full_path) { '/' }
6
6
  let(:env) { Rack::MockRequest.env_for(full_path, options) }
7
7
 
8
+ let(:action_controller_class) do
9
+ ApplicationController = Class.new do
10
+ def action_name
11
+ 'index'
12
+ end
13
+ end
14
+ end
15
+
8
16
  subject { described_class.new(env) }
9
17
 
10
18
  describe '#uuid' do
@@ -26,6 +34,46 @@ describe Loga::Rack::Request do
26
34
  end
27
35
  end
28
36
 
37
+ describe '#action_controller_instance' do
38
+ let(:action_controller_instance) { action_controller_class.new }
39
+
40
+ context 'when ACTION_CONTROLLER_INSTANCE is present' do
41
+ let(:options) do
42
+ { 'action_controller.instance' => action_controller_instance }
43
+ end
44
+ it 'returns the instance' do
45
+ expect(subject.action_controller_instance).to eq(action_controller_instance)
46
+ end
47
+ end
48
+
49
+ context 'when ACTION_DISPATCH_REQUEST_ID blank' do
50
+ it 'returns nil' do
51
+ expect(subject.action_controller_instance).to be_nil
52
+ end
53
+ end
54
+ end
55
+
56
+ describe '#action_controller' do
57
+ let(:options) do
58
+ { 'action_controller.instance' => action_controller_class.new }
59
+ end
60
+
61
+ it 'returns the controller with the action_name' do
62
+ expect(subject.action_controller).to eq('ApplicationController#index')
63
+ end
64
+ end
65
+
66
+ describe '#request_id' do
67
+ let(:action_dispatch_request_id) { 'ABCD' }
68
+ let(:options) do
69
+ { 'action_dispatch.request_id' => action_dispatch_request_id }
70
+ end
71
+
72
+ it 'aliases to uuid' do
73
+ expect(subject.request_id).to eq(subject.uuid)
74
+ end
75
+ end
76
+
29
77
  describe '#original_path' do
30
78
  let(:path) { 'users/5/oranges' }
31
79
  let(:options) { { 'loga.request.original_path' => path } }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loga
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Funding Circle
@@ -169,14 +169,15 @@ files:
169
169
  - circle.yml
170
170
  - gemfiles/rails32.gemfile
171
171
  - gemfiles/rails40.gemfile
172
+ - gemfiles/rails50.gemfile
172
173
  - gemfiles/sinatra14.gemfile
173
174
  - gemfiles/unit.gemfile
174
175
  - lib/loga.rb
175
176
  - lib/loga/configuration.rb
176
177
  - lib/loga/event.rb
177
178
  - lib/loga/ext/rails/rack/debug_exceptions.rb
179
+ - lib/loga/ext/rails/rack/logger.rb
178
180
  - lib/loga/ext/rails/rack/logger3.rb
179
- - lib/loga/ext/rails/rack/logger4.rb
180
181
  - lib/loga/formatter.rb
181
182
  - lib/loga/parameter_filter.rb
182
183
  - lib/loga/rack/logger.rb
@@ -245,6 +246,44 @@ files:
245
246
  - spec/fixtures/rails40/public/500.html
246
247
  - spec/fixtures/rails40/public/favicon.ico
247
248
  - spec/fixtures/rails40/public/robots.txt
249
+ - spec/fixtures/rails50/Rakefile
250
+ - spec/fixtures/rails50/app/controllers/application_controller.rb
251
+ - spec/fixtures/rails50/app/helpers/application_helper.rb
252
+ - spec/fixtures/rails50/app/views/layouts/application.html.erb
253
+ - spec/fixtures/rails50/app/views/user.html.erb
254
+ - spec/fixtures/rails50/bin/bundle
255
+ - spec/fixtures/rails50/bin/rails
256
+ - spec/fixtures/rails50/bin/rake
257
+ - spec/fixtures/rails50/bin/setup
258
+ - spec/fixtures/rails50/bin/update
259
+ - spec/fixtures/rails50/config.ru
260
+ - spec/fixtures/rails50/config/application.rb
261
+ - spec/fixtures/rails50/config/boot.rb
262
+ - spec/fixtures/rails50/config/cable.yml
263
+ - spec/fixtures/rails50/config/environment.rb
264
+ - spec/fixtures/rails50/config/environments/development.rb
265
+ - spec/fixtures/rails50/config/environments/production.rb
266
+ - spec/fixtures/rails50/config/environments/test.rb
267
+ - spec/fixtures/rails50/config/initializers/application_controller_renderer.rb
268
+ - spec/fixtures/rails50/config/initializers/backtrace_silencers.rb
269
+ - spec/fixtures/rails50/config/initializers/cookies_serializer.rb
270
+ - spec/fixtures/rails50/config/initializers/filter_parameter_logging.rb
271
+ - spec/fixtures/rails50/config/initializers/inflections.rb
272
+ - spec/fixtures/rails50/config/initializers/mime_types.rb
273
+ - spec/fixtures/rails50/config/initializers/new_framework_defaults.rb
274
+ - spec/fixtures/rails50/config/initializers/session_store.rb
275
+ - spec/fixtures/rails50/config/initializers/wrap_parameters.rb
276
+ - spec/fixtures/rails50/config/locales/en.yml
277
+ - spec/fixtures/rails50/config/puma.rb
278
+ - spec/fixtures/rails50/config/routes.rb
279
+ - spec/fixtures/rails50/config/secrets.yml
280
+ - spec/fixtures/rails50/public/404.html
281
+ - spec/fixtures/rails50/public/422.html
282
+ - spec/fixtures/rails50/public/500.html
283
+ - spec/fixtures/rails50/public/apple-touch-icon-precomposed.png
284
+ - spec/fixtures/rails50/public/apple-touch-icon.png
285
+ - spec/fixtures/rails50/public/favicon.ico
286
+ - spec/fixtures/rails50/public/robots.txt
248
287
  - spec/integration/rails/railtie_spec.rb
249
288
  - spec/integration/rails/request_spec.rb
250
289
  - spec/integration/sinatra_spec.rb
@@ -342,6 +381,44 @@ test_files:
342
381
  - spec/fixtures/rails40/public/500.html
343
382
  - spec/fixtures/rails40/public/favicon.ico
344
383
  - spec/fixtures/rails40/public/robots.txt
384
+ - spec/fixtures/rails50/Rakefile
385
+ - spec/fixtures/rails50/app/controllers/application_controller.rb
386
+ - spec/fixtures/rails50/app/helpers/application_helper.rb
387
+ - spec/fixtures/rails50/app/views/layouts/application.html.erb
388
+ - spec/fixtures/rails50/app/views/user.html.erb
389
+ - spec/fixtures/rails50/bin/bundle
390
+ - spec/fixtures/rails50/bin/rails
391
+ - spec/fixtures/rails50/bin/rake
392
+ - spec/fixtures/rails50/bin/setup
393
+ - spec/fixtures/rails50/bin/update
394
+ - spec/fixtures/rails50/config.ru
395
+ - spec/fixtures/rails50/config/application.rb
396
+ - spec/fixtures/rails50/config/boot.rb
397
+ - spec/fixtures/rails50/config/cable.yml
398
+ - spec/fixtures/rails50/config/environment.rb
399
+ - spec/fixtures/rails50/config/environments/development.rb
400
+ - spec/fixtures/rails50/config/environments/production.rb
401
+ - spec/fixtures/rails50/config/environments/test.rb
402
+ - spec/fixtures/rails50/config/initializers/application_controller_renderer.rb
403
+ - spec/fixtures/rails50/config/initializers/backtrace_silencers.rb
404
+ - spec/fixtures/rails50/config/initializers/cookies_serializer.rb
405
+ - spec/fixtures/rails50/config/initializers/filter_parameter_logging.rb
406
+ - spec/fixtures/rails50/config/initializers/inflections.rb
407
+ - spec/fixtures/rails50/config/initializers/mime_types.rb
408
+ - spec/fixtures/rails50/config/initializers/new_framework_defaults.rb
409
+ - spec/fixtures/rails50/config/initializers/session_store.rb
410
+ - spec/fixtures/rails50/config/initializers/wrap_parameters.rb
411
+ - spec/fixtures/rails50/config/locales/en.yml
412
+ - spec/fixtures/rails50/config/puma.rb
413
+ - spec/fixtures/rails50/config/routes.rb
414
+ - spec/fixtures/rails50/config/secrets.yml
415
+ - spec/fixtures/rails50/public/404.html
416
+ - spec/fixtures/rails50/public/422.html
417
+ - spec/fixtures/rails50/public/500.html
418
+ - spec/fixtures/rails50/public/apple-touch-icon-precomposed.png
419
+ - spec/fixtures/rails50/public/apple-touch-icon.png
420
+ - spec/fixtures/rails50/public/favicon.ico
421
+ - spec/fixtures/rails50/public/robots.txt
345
422
  - spec/integration/rails/railtie_spec.rb
346
423
  - spec/integration/rails/request_spec.rb
347
424
  - spec/integration/sinatra_spec.rb