govuk_app_config 2.5.0 → 2.7.1

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: 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