govuk_app_config 3.3.0 → 4.0.0.pre.1

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: 4ef48ff1d4edbc117dba4f4d8b09b862dacdc5faa06f879c9094e695d29025df
4
- data.tar.gz: e6465d32e6522637f3a7cdd5681c3286bf3f1fd96657099e3e28ce0e716468fa
3
+ metadata.gz: 2b08ba5468f1f0639c3dab2c7067d7a3acff2169ce85a246ceb2a976b04686a7
4
+ data.tar.gz: ce9d8876d37175726d4aa81633e4b11232975dd3d65d24bca6ac58b219248b09
5
5
  SHA512:
6
- metadata.gz: dd241443a0a59323c2210c67fb04268bd7a662cff61c7eef3580bcde200efd6d38d7efa2bfb22b7642761fd1f929f2e8a4259fe12af8692338f69ce024a9cd15
7
- data.tar.gz: 8470470f8cf108e25155b6eca6c64f82a9f79b601c22889399bfe71ce87cc39bb3e80a6efda7d30432121766721143329cc5271c591dc75ec36e495687d06a65
6
+ metadata.gz: a0eb71467c7fa26805e5606bec9f96312c6bb5e0f0d0ef3b93e1a8cfa5d556164f5ac537c9606416724eb93acbef298f57163a16876ddb5ba48b5dea05c94227
7
+ data.tar.gz: cae07877f651a180c2c62a7fd32a15714421e2dfee5c7fda5957d7601d5cd99c57e110c3b2071d7d5a4dac62c924e662c1dc70379f206b5de849ac373999d3e4
data/CHANGELOG.md CHANGED
@@ -1,10 +1,8 @@
1
- # 3.3.0
1
+ # 4.0.0.pre-1
2
2
 
3
- - Revert the `should_capture`/`before_send` consolidation introduced in 3.1.0. This fixes the `data_sync_excluded_exceptions` behaviour that has been broken since v3.1.0. ([#211](https://github.com/alphagov/govuk_app_config/pull/211))
4
-
5
- # 3.2.0
6
-
7
- - Add Speedcurve's LUX to connect-src policy ([#206](https://github.com/alphagov/govuk_app_config/pull/206))
3
+ - BREAKING: upgrades Sentry gem from `sentry-raven` to `sentry-ruby` ([#199](https://github.com/alphagov/govuk_app_config/pull/199)). There is a **[migration guide](https://docs.sentry.io/platforms/ruby/migration/)** you should follow before upgrading to this version of govuk_app_config.
4
+ - This release also fixes the `data_sync_excluded_exceptions` behaviour that has been broken since v3.1.0.
5
+ - Released as a pre-release to identify and fix any problems before a wider rollout.
8
6
 
9
7
  # 3.1.1
10
8
 
data/README.md CHANGED
@@ -112,12 +112,12 @@ end
112
112
  Finally, you can pass your own callback to evaluate whether or not to capture the exception.
113
113
  Note that if an exception is on the `excluded_exceptions` list, or on the `data_sync_excluded_exceptions`
114
114
  and occurs at the time of a data sync, then it will be excluded even if the custom
115
- `should_capture` callback returns `true`.
115
+ `before_send` callback doesn't return `nil`.
116
116
 
117
117
  ```ruby
118
118
  GovukError.configure do |config|
119
- config.should_capture = lambda do |error_or_event|
120
- error_or_event == "do capture"
119
+ config.before_send = lambda do |event, hint|
120
+ hint[:exception].is_a?(ErrorWeWantToIgnore) ? nil : event
121
121
  end
122
122
  end
123
123
  ```
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = %w[lib]
22
22
 
23
23
  spec.add_dependency "logstasher", ">= 1.2.2", "< 2.2.0"
24
- spec.add_dependency "sentry-raven", "~> 3.1.1"
24
+ spec.add_dependency "sentry-ruby", "~> 4.5.0"
25
25
  spec.add_dependency "statsd-ruby", "~> 1.5.0"
26
26
  spec.add_dependency "unicorn", ">= 5.4", "< 5.9"
27
27
 
@@ -78,13 +78,7 @@ module GovukContentSecurityPolicy
78
78
  # Allow JSON call to klick2contact - HMPO web chat provider
79
79
  "gov.klick2contact.com",
80
80
  # Allow connecting to Verify to check whether the user is logged in
81
- "www.signin.service.gov.uk",
82
- # Allow connection to Speedcurve's CDN for LUX - used for
83
- # real user metrics on GOV.UK. This loads using an image
84
- # (see image policy), but returns a JavaScript file -
85
- # which is why this has to be added to the `connect-src`
86
- # policy as well.
87
- "lux.speedcurve.com"
81
+ "www.signin.service.gov.uk"
88
82
 
89
83
  # Disallow all <object>, <embed>, and <applet> elements
90
84
  #
@@ -6,41 +6,35 @@ module GovukError
6
6
  attr_reader :data_sync, :sentry_environment
7
7
  attr_accessor :active_sentry_environments, :data_sync_excluded_exceptions
8
8
 
9
- def initialize(_raven_configuration)
9
+ def initialize(_sentry_configuration)
10
10
  super
11
11
  @sentry_environment = ENV["SENTRY_CURRENT_ENV"]
12
12
  @data_sync = GovukDataSync.new(ENV["GOVUK_DATA_SYNC_PERIOD"])
13
13
  self.active_sentry_environments = []
14
14
  self.data_sync_excluded_exceptions = []
15
- self.should_capture = ignore_exceptions_based_on_env_and_data_sync
15
+ @before_send_callbacks = [
16
+ ignore_exceptions_if_not_in_active_sentry_env,
17
+ ignore_excluded_exceptions_in_data_sync,
18
+ increment_govuk_statsd_counters,
19
+ ]
16
20
  end
17
21
 
18
- def should_capture=(closure)
19
- combined = lambda do |error_or_event|
20
- (ignore_exceptions_based_on_env_and_data_sync.call(error_or_event) && closure.call(error_or_event))
21
- end
22
-
23
- super(combined)
22
+ def before_send=(closure)
23
+ @before_send_callbacks.insert(-2, closure)
24
+ super(run_before_send_callbacks)
24
25
  end
25
26
 
26
27
  protected
27
28
 
28
- def ignore_exceptions_based_on_env_and_data_sync
29
- lambda do |error_or_event|
30
- ignore_exceptions_if_not_in_active_sentry_env.call(error_or_event) &&
31
- ignore_excluded_exceptions_in_data_sync.call(error_or_event)
32
- end
33
- end
34
-
35
29
  def ignore_exceptions_if_not_in_active_sentry_env
36
- ->(_error_or_event) { active_sentry_environments.include?(sentry_environment) }
30
+ ->(event, _hint) { event if active_sentry_environments.include?(sentry_environment) }
37
31
  end
38
32
 
39
33
  def ignore_excluded_exceptions_in_data_sync
40
- lambda { |error_or_event|
34
+ lambda { |event, hint|
41
35
  data_sync_ignored_error = data_sync_excluded_exceptions.any? do |exception_to_ignore|
42
36
  exception_to_ignore = Object.const_get(exception_to_ignore) unless exception_to_ignore.is_a?(Module)
43
- exception_chain = Raven::Utils::ExceptionCauseChain.exception_to_array(error_or_event)
37
+ exception_chain = Sentry::Utils::ExceptionCauseChain.exception_to_array(hint[:exception])
44
38
  exception_chain.any? { |exception| exception.is_a?(exception_to_ignore) }
45
39
  rescue NameError
46
40
  # the exception type represented by the exception_to_ignore string
@@ -48,8 +42,29 @@ module GovukError
48
42
  false
49
43
  end
50
44
 
51
- !(data_sync.in_progress? && data_sync_ignored_error)
45
+ event unless data_sync.in_progress? && data_sync_ignored_error
52
46
  }
53
47
  end
48
+
49
+ def increment_govuk_statsd_counters
50
+ lambda { |event, hint|
51
+ if hint[:exception]
52
+ GovukStatsd.increment("errors_occurred")
53
+ GovukStatsd.increment("error_types.#{hint[:exception].class.name.split('::').last.underscore}")
54
+ end
55
+ event
56
+ }
57
+ end
58
+
59
+ def run_before_send_callbacks
60
+ lambda do |event, hint|
61
+ result = event
62
+ @before_send_callbacks.each do |callback|
63
+ result = callback.call(event, hint)
64
+ break if result.nil?
65
+ end
66
+ result
67
+ end
68
+ end
54
69
  end
55
70
  end
@@ -1,10 +1,4 @@
1
1
  GovukError.configure do |config|
2
- config.before_send = proc { |e|
3
- GovukStatsd.increment("errors_occurred")
4
- GovukStatsd.increment("error_types.#{e.class.name.demodulize.underscore}")
5
- e
6
- }
7
-
8
2
  config.silence_ready = !Rails.env.production? if defined?(Rails)
9
3
 
10
4
  # These are the environments (described by the `SENTRY_CURRENT_ENV`
@@ -64,6 +58,10 @@ GovukError.configure do |config|
64
58
  "GdsApi::ContentStore::ItemNotFound",
65
59
  ]
66
60
 
61
+ config.before_send = lambda { |error_or_event, _hint|
62
+ error_or_event
63
+ }
64
+
67
65
  config.transport_failure_callback = proc {
68
66
  GovukStatsd.increment("error_reports_failed")
69
67
  }
@@ -1,4 +1,4 @@
1
- require "sentry-raven"
1
+ require "sentry-ruby"
2
2
  require "govuk_app_config/govuk_statsd"
3
3
  require "govuk_app_config/govuk_error/configuration"
4
4
  require "govuk_app_config/version"
@@ -13,11 +13,11 @@ module GovukError
13
13
  args[:tags] ||= {}
14
14
  args[:tags][:govuk_app_config_version] = GovukAppConfig::VERSION
15
15
 
16
- Raven.capture_exception(exception_or_message, args)
16
+ Sentry.capture_exception(exception_or_message, args)
17
17
  end
18
18
 
19
19
  def self.configure
20
- @configuration ||= Configuration.new(Raven.configuration)
20
+ @configuration ||= Configuration.new(Sentry::Configuration.new)
21
21
  yield @configuration
22
22
  end
23
23
  end
@@ -1,3 +1,3 @@
1
1
  module GovukAppConfig
2
- VERSION = "3.3.0".freeze
2
+ VERSION = "4.0.0.pre.1".freeze
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: 3.3.0
4
+ version: 4.0.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-02 00:00:00.000000000 Z
11
+ date: 2021-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstasher
@@ -31,19 +31,19 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.2.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: sentry-raven
34
+ name: sentry-ruby
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 3.1.1
39
+ version: 4.5.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 3.1.1
46
+ version: 4.5.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: statsd-ruby
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -250,7 +250,7 @@ homepage: https://github.com/alphagov/govuk_app_config
250
250
  licenses:
251
251
  - MIT
252
252
  metadata: {}
253
- post_install_message:
253
+ post_install_message:
254
254
  rdoc_options: []
255
255
  require_paths:
256
256
  - lib
@@ -261,12 +261,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
261
261
  version: '2.6'
262
262
  required_rubygems_version: !ruby/object:Gem::Requirement
263
263
  requirements:
264
- - - ">="
264
+ - - ">"
265
265
  - !ruby/object:Gem::Version
266
- version: '0'
266
+ version: 1.3.1
267
267
  requirements: []
268
268
  rubygems_version: 3.0.3
269
- signing_key:
269
+ signing_key:
270
270
  specification_version: 4
271
271
  summary: Base configuration for GOV.UK applications
272
272
  test_files: []