govuk_app_config 2.5.0 → 2.7.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: dbd89ce53c62443a1bf91f7c782fc121a493323b8f55f77db131e9fab17bc78b
4
- data.tar.gz: cc5435d8e5a2769c688afa0f37869ec96bc58311b2c7e5051e0dbe226496f50c
3
+ metadata.gz: 508f0dbee6a74e50e9e6d12922e13f4c956b62078382e2a2cc7d0a0496a94321
4
+ data.tar.gz: 2d61642e4bf9df8aea02eb71e51a99e07e201a9577fe7360346b3f5c2c31e74d
5
5
  SHA512:
6
- metadata.gz: 8c9a936938fdb3795e3edd0fdf9f43a368a5130f034d30150bdd4201c5490a47b015b492a1275d8dba4668ec9e44b32b4a8692fa4cddf7bb59eee9242f468e23
7
- data.tar.gz: ad4e17d9b55e828c4542517a427ba6f35152583fe536f87801a7d2567cff00a0bc6d036103cc29186fab381b61b904b1a7eaa63c0a088a0b55c2735371ea39e1
6
+ metadata.gz: 4a1a785b09f73f42b6e98362005e3341d744612127d477896a0ff2fc5d5aebe0052562f6c05d058c466528ac40acdd81e659ff27d9b95a3b4e952a3c6ceb60bf
7
+ data.tar.gz: 7a676c3ec6619c2f5020b56634e16803bfd6dc5f20e813fe91e3abbc83176570ee0ef09e0d08a1f9afcc639e158edd3f912f83ff5a7b202f2fa8455c5ce0e85f
@@ -1,3 +1,23 @@
1
+ # 2.7.1
2
+
3
+ * Fix broken data sync error handling for non-Rails apps
4
+
5
+ # 2.7.0
6
+
7
+ * Ignore intermittent template retrieval errors from Slimmer
8
+
9
+ # 2.6.0
10
+
11
+ * Ignore errors that occur in temporary environments (adds `active_sentry_environments` config) (https://github.com/alphagov/govuk_app_config/pull/168)
12
+
13
+ # 2.5.2
14
+
15
+ * Fix govuk_app_config in Ruby 2.7 environments by explicitly requiring the 'delegate' library (https://github.com/alphagov/govuk_app_config/pull/167)
16
+
17
+ # 2.5.1
18
+
19
+ * Increase scope of `data_sync_excluded_exceptions` so that it includes subclasses (https://github.com/alphagov/govuk_app_config/pull/165)
20
+
1
21
  # 2.5.0
2
22
 
3
23
  * Use delegator pattern for `GovukError.configure`, to allow custom `should_capture` (https://github.com/alphagov/govuk_app_config/pull/160)
data/README.md CHANGED
@@ -51,7 +51,7 @@ If you include `govuk_app_config` in your `Gemfile`, Rails' autoloading mechanis
51
51
  Your app will have to have the following environment variables set:
52
52
 
53
53
  - `SENTRY_DSN` - the [Data Source Name (DSN)][dsn] for Sentry
54
- - `SENTRY_CURRENT_ENV` - production, staging or integration
54
+ - `SENTRY_CURRENT_ENV` - e.g. "production". Make sure it is [configured to be active](#active-sentry-environments).
55
55
  - `GOVUK_STATSD_PREFIX` - a Statsd prefix like `govuk.apps.application-name.hostname`
56
56
 
57
57
  [dsn]: https://docs.sentry.io/quickstart/#about-the-dsn
@@ -79,6 +79,18 @@ GovukError.notify(
79
79
  )
80
80
  ```
81
81
 
82
+ ### Active Sentry environments
83
+
84
+ GovukError will only send errors to Sentry if your `SENTRY_CURRENT_ENV` matches one of the 'active environments' in the [default configuration](https://github.com/alphagov/govuk_app_config/blob/master/lib/govuk_app_config/govuk_error/configure.rb). This is to prevent temporary test environments from flooding our Sentry account with errors.
85
+
86
+ You can add your environment to the list of active Sentry environments like so:
87
+
88
+ ```ruby
89
+ GovukError.configure do |config|
90
+ config.active_sentry_environments << "my-test-environment"
91
+ end
92
+ ```
93
+
82
94
  ### Error configuration
83
95
 
84
96
  You can exclude certain errors from being reported using this:
@@ -27,11 +27,11 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_development_dependency "byebug"
29
29
  spec.add_development_dependency "climate_control"
30
- spec.add_development_dependency "rack-test", "~> 1.1.0"
30
+ spec.add_development_dependency "rack-test", "~> 1.1"
31
31
  spec.add_development_dependency "rails", "~> 6"
32
32
  spec.add_development_dependency "rake", "~> 13.0"
33
- spec.add_development_dependency "rspec", "~> 3.9.0"
34
- spec.add_development_dependency "rspec-its", "~> 1.3.0"
33
+ spec.add_development_dependency "rspec", "~> 3.10"
34
+ spec.add_development_dependency "rspec-its", "~> 1.3"
35
35
  spec.add_development_dependency "rubocop-govuk"
36
36
  spec.add_development_dependency "webmock"
37
37
  end
@@ -1,20 +1,23 @@
1
+ require "delegate"
1
2
  require "govuk_app_config/govuk_error/govuk_data_sync"
2
3
 
3
4
  module GovukError
4
5
  class Configuration < SimpleDelegator
5
- attr_reader :data_sync
6
- attr_accessor :data_sync_excluded_exceptions
6
+ attr_reader :data_sync, :sentry_environment
7
+ attr_accessor :active_sentry_environments, :data_sync_excluded_exceptions
7
8
 
8
9
  def initialize(_raven_configuration)
9
10
  super
11
+ @sentry_environment = ENV["SENTRY_CURRENT_ENV"]
10
12
  @data_sync = GovukDataSync.new(ENV["GOVUK_DATA_SYNC_PERIOD"])
13
+ self.active_sentry_environments = []
11
14
  self.data_sync_excluded_exceptions = []
12
- self.should_capture = ignore_excluded_exceptions_in_data_sync
15
+ self.should_capture = ignore_exceptions_based_on_env_and_data_sync
13
16
  end
14
17
 
15
18
  def should_capture=(closure)
16
19
  combined = lambda do |error_or_event|
17
- (ignore_excluded_exceptions_in_data_sync.call(error_or_event) && closure.call(error_or_event))
20
+ (ignore_exceptions_based_on_env_and_data_sync.call(error_or_event) && closure.call(error_or_event))
18
21
  end
19
22
 
20
23
  super(combined)
@@ -22,11 +25,27 @@ module GovukError
22
25
 
23
26
  protected
24
27
 
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
+ def ignore_exceptions_if_not_in_active_sentry_env
36
+ ->(_error_or_event) { active_sentry_environments.include?(sentry_environment) }
37
+ end
38
+
25
39
  def ignore_excluded_exceptions_in_data_sync
26
40
  lambda { |error_or_event|
27
41
  data_sync_ignored_error = data_sync_excluded_exceptions.any? do |exception_to_ignore|
42
+ exception_to_ignore = Object.const_get(exception_to_ignore) unless exception_to_ignore.is_a?(Module)
28
43
  exception_chain = Raven::Utils::ExceptionCauseChain.exception_to_array(error_or_event)
29
- exception_chain.any? { |exception| exception.class.to_s == exception_to_ignore }
44
+ exception_chain.any? { |exception| exception.is_a?(exception_to_ignore) }
45
+ rescue NameError
46
+ # the exception type represented by the exception_to_ignore string
47
+ # doesn't even exist in this environment, so won't be found in the chain
48
+ false
30
49
  end
31
50
 
32
51
  !(data_sync.in_progress? && data_sync_ignored_error)
@@ -7,6 +7,16 @@ GovukError.configure do |config|
7
7
 
8
8
  config.silence_ready = !Rails.env.production? if defined?(Rails)
9
9
 
10
+ # These are the environments (described by the `SENTRY_CURRENT_ENV`
11
+ # ENV variable) where we want to capture Sentry errors. If
12
+ # `SENTRY_CURRENT_ENV` isn't in this list, or isn't defined, then
13
+ # don't capture the error.
14
+ config.active_sentry_environments = %w[
15
+ integration-blue-aws
16
+ staging
17
+ production
18
+ ]
19
+
10
20
  config.excluded_exceptions = [
11
21
  # Default ActionDispatch rescue responses
12
22
  "ActionController::RoutingError",
@@ -36,6 +46,7 @@ GovukError.configure do |config|
36
46
  "GdsApi::TimedOutException",
37
47
  "Mongoid::Errors::DocumentNotFound",
38
48
  "Sinatra::NotFound",
49
+ "Slimmer::IntermittentRetrievalError",
39
50
  ]
40
51
 
41
52
  # This will exclude exceptions that are triggered by one of the ignored
@@ -28,7 +28,7 @@ module GovukError
28
28
  end
29
29
 
30
30
  def in_progress?
31
- from.present? && to.present? && in_time_range?(from, to)
31
+ !from.nil? && !to.nil? && in_time_range?(from, to)
32
32
  end
33
33
 
34
34
  private
@@ -1,3 +1,3 @@
1
1
  module GovukAppConfig
2
- VERSION = "2.5.0".freeze
2
+ VERSION = "2.7.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: 2.5.0
4
+ version: 2.7.1
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-10-20 00:00:00.000000000 Z
11
+ date: 2020-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstasher
@@ -112,14 +112,14 @@ dependencies:
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: 1.1.0
115
+ version: '1.1'
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: 1.1.0
122
+ version: '1.1'
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: rails
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -154,28 +154,28 @@ dependencies:
154
154
  requirements:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: 3.9.0
157
+ version: '3.10'
158
158
  type: :development
159
159
  prerelease: false
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  requirements:
162
162
  - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: 3.9.0
164
+ version: '3.10'
165
165
  - !ruby/object:Gem::Dependency
166
166
  name: rspec-its
167
167
  requirement: !ruby/object:Gem::Requirement
168
168
  requirements:
169
169
  - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: 1.3.0
171
+ version: '1.3'
172
172
  type: :development
173
173
  prerelease: false
174
174
  version_requirements: !ruby/object:Gem::Requirement
175
175
  requirements:
176
176
  - - "~>"
177
177
  - !ruby/object:Gem::Version
178
- version: 1.3.0
178
+ version: '1.3'
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: rubocop-govuk
181
181
  requirement: !ruby/object:Gem::Requirement