govuk_app_config 3.0.0 → 4.0.0.pre.3

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: 68431d222e7798dd3027131ef5d05ea7cfab1f7df54d5e06274f2de19f4e51ea
4
- data.tar.gz: 6c5273bd18e606f6269279d547e91630574d61dc7a1151bfbbecd55f3f38d371
3
+ metadata.gz: 64e3b5e80cdc107dd26911c7bf2cf9e298fe37fbb7b7cc28b3c860f74424843e
4
+ data.tar.gz: 45051a0d49d02e14b1385894ac53f61ebdaffa11f9379c6f2ac7c1c5752d0794
5
5
  SHA512:
6
- metadata.gz: '06387b0c49fe60c29728fdda8a8f3bfe529c9b8db2b87ef795b20dfb2ef157667102768d496a7cb1ccad4425265051075f9886d9e155632bb68c47626480c882'
7
- data.tar.gz: 4ec51524d66f98be80b779d28ec65d0355b721e2fd794c03f4c61a573371c800e46f6d7c6ee514dd080430763803f7396bcd37c0e4bd7e57d33d886f6ae59980
6
+ metadata.gz: 33ac4913c546cbf10958b1efca95792886bb4d2dac81aa4303bea4343515d23fabedc94e272a5aa6383cff6c27448d4bcd8ceda27d4329f7be3dbb651f86ca79
7
+ data.tar.gz: aee0bd0ff3a81e6ade12461b81a10073c903eb7c35762f744c89d4feec0fe5f933bcb20609e75add6b94d8e60c0c49d836527517c8defcdcc3ee23856143be02
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "03:00"
8
+ open-pull-requests-limit: 10
9
+ ignore:
10
+ - dependency-name: aws-xray-sdk
11
+ versions:
12
+ - "> 0.10.0"
data/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ # 4.0.0.pre.3
2
+
3
+ - Include [sentry-rails](https://github.com/getsentry/sentry-ruby/tree/master/sentry-rails) by default ([#203](https://github.com/alphagov/govuk_app_config/pull/203)).
4
+
5
+ # 4.0.0.pre.2
6
+
7
+ - Fix default Sentry configuration ([#202](https://github.com/alphagov/govuk_app_config/pull/202)).
8
+ - BREAKING: this means no more `silence_ready` or `transport_failure_callback` options.
9
+
10
+ # 4.0.0.pre.1
11
+
12
+ - 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.
13
+ - This release also fixes the `data_sync_excluded_exceptions` behaviour that has been broken since v3.1.0.
14
+ - Released as a pre-release to identify and fix any problems before a wider rollout.
15
+
16
+ # 3.1.1
17
+
18
+ - Fix the new before_send behaviour & tests, and add documentation ([#197](https://github.com/alphagov/govuk_app_config/pull/197))
19
+
20
+ # 3.1.0
21
+
22
+ - Remove support for `should_capture` callbacks in favour of `before_send` ([#196](https://github.com/alphagov/govuk_app_config/pull/196))
23
+
1
24
  # 3.0.0
2
25
 
3
26
  * BREAKING: Implement RFC 141 - remove unsuitable healthchecks and return a 500 on healthcheck failure ([#193](https://github.com/alphagov/govuk_app_config/pull/193))
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
  ```
@@ -13,15 +13,16 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/alphagov/govuk_app_config"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
- f.match(%r{^(test|spec|features)/})
18
- end
16
+ spec.required_ruby_version = ">= 2.6"
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
19
  spec.bindir = "exe"
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
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-rails", "~> 4.5.0"
25
+ spec.add_dependency "sentry-ruby", "~> 4.5.0"
25
26
  spec.add_dependency "statsd-ruby", "~> 1.5.0"
26
27
  spec.add_dependency "unicorn", ">= 5.4", "< 5.9"
27
28
 
@@ -1,4 +1,5 @@
1
- require "sentry-raven"
1
+ require "sentry-ruby"
2
+ require "sentry-rails"
2
3
  require "govuk_app_config/govuk_statsd"
3
4
  require "govuk_app_config/govuk_error/configuration"
4
5
  require "govuk_app_config/version"
@@ -13,11 +14,11 @@ module GovukError
13
14
  args[:tags] ||= {}
14
15
  args[:tags][:govuk_app_config_version] = GovukAppConfig::VERSION
15
16
 
16
- Raven.capture_exception(exception_or_message, args)
17
+ Sentry.capture_exception(exception_or_message, args)
17
18
  end
18
19
 
19
20
  def self.configure
20
- @configuration ||= Configuration.new(Raven.configuration)
21
+ @configuration ||= Configuration.new(Sentry::Configuration.new)
21
22
  yield @configuration
22
23
  end
23
24
  end
@@ -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,12 +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
- config.silence_ready = !Rails.env.production? if defined?(Rails)
9
-
10
2
  # These are the environments (described by the `SENTRY_CURRENT_ENV`
11
3
  # ENV variable) where we want to capture Sentry errors. If
12
4
  # `SENTRY_CURRENT_ENV` isn't in this list, or isn't defined, then
@@ -64,7 +56,7 @@ GovukError.configure do |config|
64
56
  "GdsApi::ContentStore::ItemNotFound",
65
57
  ]
66
58
 
67
- config.transport_failure_callback = proc {
68
- GovukStatsd.increment("error_reports_failed")
59
+ config.before_send = lambda { |error_or_event, _hint|
60
+ error_or_event
69
61
  }
70
62
  end
@@ -3,14 +3,8 @@ require "time"
3
3
  module GovukError
4
4
  class GovukDataSync
5
5
  class MalformedDataSyncPeriod < RuntimeError
6
- attr_reader :invalid_value
7
-
8
6
  def initialize(invalid_value)
9
- @invalid_value = invalid_value
10
- end
11
-
12
- def message
13
- "\"#{invalid_value}\" is not a valid value (should be of form '22:00-03:00')."
7
+ super("\"#{invalid_value}\" is not a valid value (should be of form '22:00-03:00').")
14
8
  end
15
9
  end
16
10
 
@@ -1,3 +1,3 @@
1
1
  module GovukAppConfig
2
- VERSION = "3.0.0".freeze
2
+ VERSION = "4.0.0.pre.3".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.0.0
4
+ version: 4.0.0.pre.3
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: 2021-04-26 00:00:00.000000000 Z
11
+ date: 2021-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstasher
@@ -31,19 +31,33 @@ 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-rails
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
+ - !ruby/object:Gem::Dependency
48
+ name: sentry-ruby
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 4.5.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 4.5.0
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: statsd-ruby
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -211,6 +225,7 @@ executables: []
211
225
  extensions: []
212
226
  extra_rdoc_files: []
213
227
  files:
228
+ - ".github/dependabot.yml"
214
229
  - ".gitignore"
215
230
  - ".rspec"
216
231
  - ".rubocop.yml"
@@ -257,14 +272,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
257
272
  requirements:
258
273
  - - ">="
259
274
  - !ruby/object:Gem::Version
260
- version: '0'
275
+ version: '2.6'
261
276
  required_rubygems_version: !ruby/object:Gem::Requirement
262
277
  requirements:
263
- - - ">="
278
+ - - ">"
264
279
  - !ruby/object:Gem::Version
265
- version: '0'
280
+ version: 1.3.1
266
281
  requirements: []
267
- rubygems_version: 3.1.4
282
+ rubygems_version: 3.0.3
268
283
  signing_key:
269
284
  specification_version: 4
270
285
  summary: Base configuration for GOV.UK applications