epilog 0.4.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c182e5b6fad45d60dcbf0e37843e075e6775d76e3888a632056cef356235768
4
- data.tar.gz: bb7095818994ab3532c70c691180fe1018089e587cc7819faf1441bb6532acf9
3
+ metadata.gz: 32a54d6c7ea304907eb4dc22c25c9929b3da12567229bff59011e71d9beb6657
4
+ data.tar.gz: 6368c2823685e10c8f599e0b2a38fbe51d815276427d7678de23438cb91967f2
5
5
  SHA512:
6
- metadata.gz: 07552c37f2ebcc5febb7d94f227801c8f89e15eae7904e493c6575bd83819a1989b7229a9d1559ffc9f4651884611160b77779cfce11fa1abcf48c71bd484612
7
- data.tar.gz: 5664a1841cdd95b1af21e8796a374f30d5ddfd26faf6ef4782abc9de435098d351f3e29d2b778358e74c1af5ae55b9cb4d4155c0cba776201ed9d350286abc41
6
+ metadata.gz: 9c7043de6697ddd6ec8c5b9bd5e9c4b4f6514ac294832778df3001cee5b33095d9da4ba98c94a4d9719a543774211bd0451c9648274833b78c17acab1d06778c
7
+ data.tar.gz: b0c7afa816aafe154ac47d944baa5398c692d2c5b33f4c014460486daae83f280c070d63f8a09b67b2025f4bf9e153878b84aad848b6ce1780699e9ed75ae00d
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
 
10
10
  /spec/rails_app/log/
11
11
  /spec/rails_app/db/test.sqlite
12
+ /.idea
data/.travis.yml CHANGED
@@ -4,10 +4,12 @@ rvm:
4
4
  - 2.3
5
5
  - 2.4
6
6
  - 2.5
7
+ - 2.6
7
8
  env:
8
9
  matrix:
9
- - RAILS_VERSION=4.2
10
10
  - RAILS_VERSION=5.2
11
+ - RAILS_VERSION=6.0
12
+ - RAILS_VERSION=6.1
11
13
  global:
12
14
  - COVERAGE=1
13
15
  - secure: 'nm0AJBULqunzS//h26lblqWHV4Kl0Ij9OPVHMI761TNeFFjP2+KKUVh4qYEKrdUDp7pk9Wa4CdAB9EFLYTJMwyK8RlSkdMLaHGT9xdOqbycBS6vkW2symvdu58SSdsNmnnFV4ebOwEmEcDhAh8SyT0ZkUVhyzGntdzOOZmULi57kOwm8QGrrr4/4xaTmDleZlTDS404nD28wJctaBT8Xa33inaYYrHLKz4xbvFFtptrPb+Arav9enljqiqOu4XjXCIP2eOSP7PHkDPuRn0JKDFT3zKmj0MIUbYkoheQL6R3tMF9zx5gm4GKbd7iunuIsjbFweiveZwZhfNGDPCICuw76UWZCrN4PpomA7XDNjbs0JVRJvnBxLZk5X3w3Sacb4zBTd+U8WH7uAb9qdD7m4xUswox4tPZDPXYObw2PDqtLlsSRn3WDKsnG0/Tt0D+kFsx43MbrvspdOzjarJsIXzU9aJqfE97nM4ZrNcktsW4PrqGflhcDVTKg+kLQj4bO0csR1W/JhGHN0JsVNUmNFN9QqpuRxxI/AmnPBtKR29DDy3BUv1b/kCZbsqq4+wbgCKDJng5VBgpG4VekOiTT2xmlwoxNK4IUAISbu7G/eyCcp33jb+27QE74a13xQsMLvh/wjh1sFEfzJvQzXFL+gjkVP4Z/+uSbc2+8/p+FKm8='
@@ -28,7 +30,7 @@ after_script:
28
30
  jobs:
29
31
  include:
30
32
  - stage: release
31
- rvm: 2.3
33
+ rvm: 2.6
32
34
  script: skip
33
35
  deploy:
34
36
  provider: rubygems
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.0
4
+
5
+ - Add support for Rails 6 [#18](https://github.com/machinima/epilog/pull/18)
6
+
7
+ ## 0.6.0
8
+
9
+ - Add support for Rails 5 API-only controllers [#17](https://github.com/machinima/epilog/pull/17)
10
+
11
+ ## 0.5.0
12
+
13
+ - Add options to enable/disable start and end logs [#15](https://github.com/machinima/epilog/pull/15)
14
+ - Fix with_context to use ensure [#16](https://github.com/machinima/epilog/pull/16)
15
+
3
16
  ## 0.4.0
4
17
 
5
18
  - Add context support to Logger [#12](https://github.com/machinima/epilog/pull/12)
data/Gemfile CHANGED
@@ -5,4 +5,9 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'rails', "~> #{ENV.fetch('RAILS_VERSION', '5.2')}"
8
+ if ENV.fetch('RAILS_VERSION', '5.2').to_f >= 5
9
+ gem 'sqlite3', '~> 1.4'
10
+ else
11
+ gem 'sqlite3', '= 1.3.10' # rubocop:disable Bundler/DuplicatedGem
12
+ end
8
13
  end
data/epilog.gemspec CHANGED
@@ -21,15 +21,15 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency 'bundler', '>= 1.12'
23
23
  spec.add_development_dependency 'byebug', '~> 11.0'
24
- spec.add_development_dependency 'combustion', '~> 1.1.0'
24
+ spec.add_development_dependency 'combustion', '~> 1.3'
25
25
  spec.add_development_dependency 'irb'
26
- spec.add_development_dependency 'rails', '>= 4.2', '< 6'
26
+ spec.add_development_dependency 'rails', '>= 4.2', '< 7'
27
27
  spec.add_development_dependency 'rake', '~> 13.0'
28
28
  spec.add_development_dependency 'redcarpet', '~> 3.5'
29
29
  spec.add_development_dependency 'rspec', '~> 3.4'
30
30
  spec.add_development_dependency 'rspec-rails', '~> 3.8.1'
31
31
  spec.add_development_dependency 'rubocop', '0.75'
32
32
  spec.add_development_dependency 'simplecov', '~> 0.17'
33
- spec.add_development_dependency 'sqlite3', '~> 1.3', '< 1.4'
33
+ spec.add_development_dependency 'sqlite3', '~> 1.3', '< 1.5'
34
34
  spec.add_development_dependency 'yard', '~> 0.9.11'
35
35
  end
@@ -5,6 +5,7 @@ module Epilog
5
5
  def with_context(context)
6
6
  push_context(context)
7
7
  yield
8
+ ensure
8
9
  pop_context
9
10
  end
10
11
 
@@ -12,25 +12,11 @@ module Epilog
12
12
  .merge(event.payload[:context])
13
13
  )
14
14
 
15
- info do
16
- {
17
- message: "#{request_string(event)} started",
18
- request: request_hash(event)
19
- }
20
- end
15
+ log_start(event) if config.double_request_logs
21
16
  end
22
17
 
23
18
  def process_request(event)
24
- info do
25
- {
26
- message: response_string(event),
27
- request: short_request_hash(event),
28
- response: response_hash(event),
29
- metrics: process_metrics(event.payload[:metrics]
30
- .merge(request_runtime: event.duration.round(2)))
31
- }
32
- end
33
-
19
+ log_end(event)
34
20
  pop_context
35
21
  end
36
22
 
@@ -84,6 +70,33 @@ module Epilog
84
70
 
85
71
  private
86
72
 
73
+ def log_start(event)
74
+ info do
75
+ {
76
+ message: "#{request_string(event)} started",
77
+ request: request_hash(event)
78
+ }
79
+ end
80
+ end
81
+
82
+ def log_end(event) # rubocop:disable MethodLength
83
+ request = if config.double_request_logs
84
+ short_request_hash(event)
85
+ else
86
+ request_hash(event)
87
+ end
88
+
89
+ info do
90
+ {
91
+ message: response_string(event),
92
+ request: request,
93
+ response: response_hash(event),
94
+ metrics: process_metrics(event.payload[:metrics]
95
+ .merge(request_runtime: event.duration.round(2)))
96
+ }
97
+ end
98
+ end
99
+
87
100
  def request_hash(event) # rubocop:disable AbcSize, MethodLength
88
101
  request = event.payload[:request]
89
102
  param_filter = request.send(:parameter_filter)
@@ -13,6 +13,8 @@ module Epilog
13
13
  end
14
14
  end
15
15
 
16
+ # Method `receive` removed in Rails 6.1
17
+ # https://github.com/rails/rails/commit/d5fa9569a0d401893d54ee47fe43fd87b6155fb7
16
18
  def receive(event)
17
19
  info do
18
20
  hash(
@@ -3,9 +3,27 @@
3
3
  module Epilog
4
4
  module Rails
5
5
  class ActiveJobSubscriber < LogSubscriber
6
+ # rubocop:disable Metrics/MethodLength
6
7
  def enqueue(event)
7
- info { event_hash('Enqueued job', event) }
8
+ ex = event.payload[:exception_object]
9
+
10
+ if ex
11
+ error do
12
+ event_hash('Failed enqueuing job', event)
13
+ end
14
+ elsif event.payload[:aborted]
15
+ info do
16
+ event_hash(
17
+ 'Failed enqueuing job, a before_enqueue callback' \
18
+ ' halted the enqueuing execution.',
19
+ event
20
+ )
21
+ end
22
+ else
23
+ info { event_hash('Enqueued job', event) }
24
+ end
8
25
  end
26
+ # rubocop:enable Metrics/MethodLength
9
27
 
10
28
  def enqueue_at(event)
11
29
  enqueue(event)
@@ -13,19 +31,49 @@ module Epilog
13
31
 
14
32
  def perform_start(event)
15
33
  push_context(job: short_job_hash(event.payload[:job]))
34
+ return unless config.double_job_logs
35
+
16
36
  info { event_hash('Performing job', event) }
17
37
  end
18
38
 
39
+ # rubocop:disable Metrics/MethodLength
40
+ # rubocop:disable Metrics/AbcSize
19
41
  def perform(event)
20
- info do
21
- event_hash('Performed job', event).merge(
22
- metrics: {
23
- job_runtime: event.duration
24
- }
25
- )
42
+ ex = event.payload[:exception_object]
43
+ if ex
44
+ error do
45
+ event_hash('Error performing job', event).merge(
46
+ metrics: {
47
+ job_runtime: event.duration
48
+ }
49
+ )
50
+ end
51
+ elsif event.payload[:aborted]
52
+ error do
53
+ event_hash(
54
+ 'Error performing job, a before_perform ' \
55
+ 'callback halted the job execution',
56
+ event
57
+ ).merge(
58
+ metrics: {
59
+ job_runtime: event.duration
60
+ }
61
+ )
62
+ end
63
+ else
64
+ info do
65
+ event_hash('Performed job', event).merge(
66
+ metrics: {
67
+ job_runtime: event.duration
68
+ }
69
+ )
70
+ end
26
71
  end
72
+
27
73
  pop_context
28
74
  end
75
+ # rubocop:enable Metrics/MethodLength
76
+ # rubocop:enable Metrics/AbcSize
29
77
 
30
78
  private
31
79
 
@@ -2,10 +2,15 @@
2
2
 
3
3
  module Epilog
4
4
  class Logger
5
- include LoggerSilence
6
-
7
5
  def silencer
8
6
  false
9
7
  end
10
8
  end
11
9
  end
10
+
11
+ logger_silencer = if Rails::VERSION::MAJOR >= 6
12
+ ActiveSupport::LoggerSilence
13
+ else
14
+ ::LoggerSilence
15
+ end
16
+ Epilog::Logger.send(:include, logger_silencer)
@@ -47,4 +47,17 @@ module Epilog
47
47
  end
48
48
  end
49
49
 
50
- ActionController::Base.prepend(Epilog::ActionControllerExt)
50
+ def prepend_controller_ext
51
+ ActionController::Base.prepend(Epilog::ActionControllerExt)
52
+ return unless defined? ActionController::API
53
+
54
+ ActionController::API.prepend(Epilog::ActionControllerExt)
55
+ end
56
+
57
+ if ::Rails::VERSION::MAJOR < 5
58
+ prepend_controller_ext
59
+ else
60
+ ActiveSupport.on_load(:action_controller_base) do
61
+ prepend_controller_ext
62
+ end
63
+ end
@@ -17,6 +17,10 @@ module Epilog
17
17
  def pop_context
18
18
  @logger.try(:pop_context)
19
19
  end
20
+
21
+ def config
22
+ ::Rails.application.config.epilog
23
+ end
20
24
  end
21
25
  end
22
26
  end
@@ -3,6 +3,15 @@
3
3
  module Epilog
4
4
  module Rails
5
5
  class Railtie < ::Rails::Railtie
6
+ def self.rails_6_1_higher?
7
+ Gem::Version.new(::Rails::VERSION::STRING) >= Gem::Version.new('6.1.0')
8
+ end
9
+
10
+ # We need this in Rails 6.
11
+ # Without this line `ActiveJob::LogSubscriber` fails
12
+ # with unknown contant error
13
+ ActiveSupport.run_load_hooks(:active_job, ActiveJob::Base)
14
+
6
15
  SUBSCRIBERS = {
7
16
  action_controller: ActionControllerSubscriber,
8
17
  action_mailer: ActionMailerSubscriber,
@@ -16,10 +25,16 @@ module Epilog
16
25
  ActionMailer::LogSubscriber,
17
26
  ActionView::LogSubscriber,
18
27
  ActiveRecord::LogSubscriber,
19
- ActiveJob::Logging::LogSubscriber
28
+ if rails_6_1_higher?
29
+ ActiveJob::LogSubscriber
30
+ else
31
+ ActiveJob::Logging::LogSubscriber
32
+ end
20
33
  ].freeze
21
34
 
22
35
  config.epilog = ActiveSupport::OrderedOptions.new
36
+ config.epilog.double_request_logs = true
37
+ config.epilog.double_job_logs = true
23
38
  config.epilog.subscriptions = %i[
24
39
  action_controller
25
40
  action_mailer
@@ -54,7 +69,7 @@ module Epilog
54
69
 
55
70
  def unsubscribe_listeners(subscriber, pattern)
56
71
  notifier = ActiveSupport::Notifications.notifier
57
- notifier.listeners_for(pattern).each do |listener|
72
+ notifier.listeners_for(Array.wrap(pattern).first).each do |listener|
58
73
  if listener.delegates_to?(subscriber)
59
74
  ActiveSupport::Notifications.unsubscribe(listener)
60
75
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Epilog
4
- VERSION = '0.4.0'
4
+ VERSION = '0.7.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Howard
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-10 00:00:00.000000000 Z
11
+ date: 2022-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.0
47
+ version: '1.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.0
54
+ version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: irb
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -75,7 +75,7 @@ dependencies:
75
75
  version: '4.2'
76
76
  - - "<"
77
77
  - !ruby/object:Gem::Version
78
- version: '6'
78
+ version: '7'
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -85,7 +85,7 @@ dependencies:
85
85
  version: '4.2'
86
86
  - - "<"
87
87
  - !ruby/object:Gem::Version
88
- version: '6'
88
+ version: '7'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rake
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +179,7 @@ dependencies:
179
179
  version: '1.3'
180
180
  - - "<"
181
181
  - !ruby/object:Gem::Version
182
- version: '1.4'
182
+ version: '1.5'
183
183
  type: :development
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
@@ -189,7 +189,7 @@ dependencies:
189
189
  version: '1.3'
190
190
  - - "<"
191
191
  - !ruby/object:Gem::Version
192
- version: '1.4'
192
+ version: '1.5'
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: yard
195
195
  requirement: !ruby/object:Gem::Requirement
@@ -204,7 +204,7 @@ dependencies:
204
204
  - - "~>"
205
205
  - !ruby/object:Gem::Version
206
206
  version: 0.9.11
207
- description:
207
+ description:
208
208
  email:
209
209
  - jmhoward0@gmail.com
210
210
  executables: []
@@ -216,7 +216,7 @@ files:
216
216
  - ".rubocop.yml"
217
217
  - ".travis.yml"
218
218
  - ".yardopts"
219
- - CHANGLOG.md
219
+ - CHANGELOG.md
220
220
  - Gemfile
221
221
  - LICENSE.txt
222
222
  - README.md
@@ -258,7 +258,7 @@ homepage: https://github.com/machinima/epilog
258
258
  licenses:
259
259
  - Apache-2.0
260
260
  metadata: {}
261
- post_install_message:
261
+ post_install_message:
262
262
  rdoc_options: []
263
263
  require_paths:
264
264
  - lib
@@ -273,9 +273,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
273
  - !ruby/object:Gem::Version
274
274
  version: '0'
275
275
  requirements: []
276
- rubyforge_project:
277
- rubygems_version: 2.7.7
278
- signing_key:
276
+ rubygems_version: 3.3.7
277
+ signing_key:
279
278
  specification_version: 4
280
279
  summary: A JSON logger with Rails support
281
280
  test_files: []