govuk_app_config 2.1.2 → 2.2.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: 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