govuk_app_config 2.1.2 → 2.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00db6acb8d6b3c6f2682914794f02ff946e3ced2dccde8ae5c999d06814327c6
4
- data.tar.gz: 897ae29ceea331b4f66fe2d247e7e61f1d87c518d994e9515f81e3f229b9be2a
3
+ metadata.gz: 35f743a622acf54ffad6414762bb3af0ebfc230c40b19b8f57286671f3fe6211
4
+ data.tar.gz: 4f39093e5358964cae3e587a4841c414b6f2eaf14381b25e6fa909f4a163bcc6
5
5
  SHA512:
6
- metadata.gz: 963bd2ee9b438f29988b85d9ae1a8c4e5fdbe198fe6221b963b66782011acd270654640280eaefcc133626dde8a85750a407cb016a511b749a09530863dd366e
7
- data.tar.gz: 40658b4718d1f74d864d5d6ac26753b6a18906fcb72669d04787e5ff56ccc805d2c348d14282108cc92cc99bcc941a88333446e1a475579c365240bda3fc38f5
6
+ metadata.gz: 7fedf54ca7d82cca175148e41fb0a72ca448675a8ccf3346bc5d29c47c7905786e3b0bfc2d0b3f4ffa0abaea786ff98e79b539df789207b1877a076182e7f913
7
+ data.tar.gz: 6243b62c1b2e679c033525843d527c8fc7c2c6cd2b8ab7df3aa2d6a070dd4c527af32fbfdeeabc0e53e35be2383d21f002b1816e4a8e1ce372b84279029c11b0
@@ -1,3 +1,7 @@
1
+ # 2.2.0
2
+
3
+ * Monkey patch `ActionDispatch::DebugExceptions#log_error` so it logs errors on a single line (https://github.com/alphagov/govuk_app_config/pull/147)
4
+
1
5
  # 2.1.2
2
6
 
3
7
  * Add missing ActiveRecord rescue_responses (https://github.com/alphagov/govuk_app_config/pull/142)
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_development_dependency "bundler", "~> 1.15"
31
31
  spec.add_development_dependency "climate_control"
32
+ spec.add_development_dependency "rack-test", "~> 0.6.3"
32
33
  spec.add_development_dependency "rails", "~> 6"
33
34
  spec.add_development_dependency "rake", "~> 13.0"
34
35
  spec.add_development_dependency "rspec", "~> 3.9.0"
@@ -1,5 +1,6 @@
1
1
  require 'logstasher'
2
2
  require 'action_controller'
3
+ require_relative 'rails_ext/action_dispatch/debug_exceptions'
3
4
 
4
5
  module GovukLogging
5
6
  def self.configure
@@ -50,7 +51,7 @@ module GovukLogging
50
51
  "#{String === msg ? msg : msg.inspect}\n"
51
52
  }
52
53
  )
53
- Rails.application.config.logstasher.supress_app_log = true
54
+ Rails.application.config.logstasher.suppress_app_log = true
54
55
 
55
56
  if defined?(GdsApi::Base)
56
57
  GdsApi::Base.default_options ||= {}
@@ -61,5 +62,7 @@ module GovukLogging
61
62
  GdsApi::Base.default_options[:logger] =
62
63
  Rails.application.config.logstasher.logger
63
64
  end
65
+
66
+ RailsExt::ActionDispatch.monkey_patch_log_error if RailsExt::ActionDispatch.should_monkey_patch_log_error?
64
67
  end
65
68
  end
@@ -0,0 +1,53 @@
1
+ require "action_dispatch/middleware/debug_exceptions"
2
+
3
+ module GovukLogging
4
+ module RailsExt
5
+ module ActionDispatch
6
+ def self.should_monkey_patch_log_error?(clazz = ::ActionDispatch::DebugExceptions)
7
+ empty_instance = clazz.new nil
8
+ target_method = empty_instance.method :log_error
9
+
10
+ expected_parameters = [%i[req request], %i[req wrapper]]
11
+ actual_parameters = target_method.parameters
12
+
13
+ should_monkey_patch = actual_parameters == expected_parameters
14
+
15
+ unless should_monkey_patch
16
+ Rails.logger.warn "Refused to monkey patch ::ActionDispatch::DebugExceptions#log_error - " +
17
+ "signatures do not match. " +
18
+ "Expected #{expected_parameters}, but got #{actual_parameters}"
19
+ end
20
+
21
+ should_monkey_patch
22
+
23
+ rescue StandardError => ex
24
+ Rails.logger.warn "Failed to detect whether to monkey patch " +
25
+ "::ActionDispatch::DebugExceptions#log_error - #{ex.inspect}"
26
+ false
27
+ end
28
+
29
+ def self.monkey_patch_log_error(clazz = ::ActionDispatch::DebugExceptions)
30
+ clazz.class_eval do
31
+ private
32
+
33
+ def log_error(request, wrapper)
34
+ logger = logger(request)
35
+
36
+ return unless logger
37
+
38
+ exception = wrapper.exception
39
+
40
+ trace = wrapper.application_trace
41
+ trace = wrapper.framework_trace if trace.empty?
42
+
43
+ logger.fatal({
44
+ exception_class: exception.class.to_s,
45
+ exception_message: exception.message,
46
+ stacktrace: trace,
47
+ }.to_json)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukAppConfig
2
- VERSION = "2.1.2"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_app_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-19 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstasher
@@ -112,6 +112,20 @@ dependencies:
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: rack-test
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.6.3
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: 0.6.3
115
129
  - !ruby/object:Gem::Dependency
116
130
  name: rails
117
131
  requirement: !ruby/object:Gem::Requirement
@@ -218,6 +232,7 @@ files:
218
232
  - lib/govuk_app_config/govuk_logging.rb
219
233
  - lib/govuk_app_config/govuk_statsd.rb
220
234
  - lib/govuk_app_config/govuk_unicorn.rb
235
+ - lib/govuk_app_config/rails_ext/action_dispatch/debug_exceptions.rb
221
236
  - lib/govuk_app_config/railtie.rb
222
237
  - lib/govuk_app_config/version.rb
223
238
  homepage: https://github.com/alphagov/govuk_app_config