govuk_app_config 0.1.0 → 0.2.0
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 +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +9 -0
- data/README.md +41 -0
- data/govuk_app_config.gemspec +5 -0
- data/lib/govuk_app_config.rb +3 -3
- data/lib/govuk_app_config/configure.rb +24 -0
- data/lib/govuk_app_config/govuk_error.rb +13 -0
- data/lib/govuk_app_config/govuk_statsd.rb +15 -0
- data/lib/govuk_app_config/version.rb +1 -1
- metadata +61 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '089341e237b45993c1de26ae8fcc53b765c37f1f'
|
4
|
+
data.tar.gz: '096f6ff793400709eaf33bd73efcacb0068896d0'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84d313cb9e2ae553f7a87184578b7cb6946e963cd132614736c0b9e4ad7b49e37e2602bbf14cf3723ce3fb1a3b59e9cedf440a9077859edbbccc42284dc062bc
|
7
|
+
data.tar.gz: 5e00d1dee3208dd26ddec7046f6bf7ab3049c840bb5975a9ffd49ad7f43a1753d1f5304337cbc3b32786f788b6a115590a5f2e7e2799d7a17fcdc6b5632229da
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -14,6 +14,47 @@ And then execute:
|
|
14
14
|
|
15
15
|
## Usage
|
16
16
|
|
17
|
+
### Automatic error reporting
|
18
|
+
|
19
|
+
If you include `govuk_app_config` in your `Gemfile`, Rails' autoloading mechanism will make sure that your application is configured to send errors Sentry.
|
20
|
+
|
21
|
+
If you use the gem outside of Rails you'll have to explicitly require it:
|
22
|
+
|
23
|
+
```rb
|
24
|
+
require 'govuk_app_config/configure'
|
25
|
+
```
|
26
|
+
|
27
|
+
Your app will have to have the following environment variables set:
|
28
|
+
|
29
|
+
- `SENTRY_DSN` - the [Data Source Name (DSN)][dsn] for Sentry
|
30
|
+
- `SENTRY_CURRENT_ENV` - production, staging or integration
|
31
|
+
- `GOVUK_STATSD_PREFIX` - a Statsd prefix like `govuk.apps.application-name`
|
32
|
+
|
33
|
+
[dsn]: https://docs.sentry.io/quickstart/#about-the-dsn
|
34
|
+
|
35
|
+
### Manual error reporting
|
36
|
+
|
37
|
+
Report something to Sentry manually:
|
38
|
+
|
39
|
+
```rb
|
40
|
+
GovukError.notify("Something went terribly wrong")
|
41
|
+
```
|
42
|
+
|
43
|
+
```rb
|
44
|
+
GovukError.notify(ArgumentError.new("Or some exception object"))
|
45
|
+
```
|
46
|
+
|
47
|
+
Extra parameters are:
|
48
|
+
|
49
|
+
```rb
|
50
|
+
GovukError.notify(
|
51
|
+
"Oops",
|
52
|
+
extra: { offending_content_id: '123' }, # Additional context for this event. Must be a hash. Children can be any native JSON type.
|
53
|
+
level: 'debug', # debug, info, warning, error, fatal
|
54
|
+
tags: { key: 'value' } # Tags to index with this event. Must be a mapping of strings.
|
55
|
+
)
|
56
|
+
```
|
57
|
+
|
17
58
|
## License
|
18
59
|
|
19
60
|
[MIT License][LICENSE.md]
|
data/govuk_app_config.gemspec
CHANGED
@@ -21,7 +21,12 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
+
spec.add_dependency "statsd-ruby", "~> 1.4.0"
|
25
|
+
spec.add_dependency "sentry-raven", "~> 2.6.3"
|
26
|
+
|
24
27
|
spec.add_development_dependency "bundler", "~> 1.15"
|
25
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
29
|
spec.add_development_dependency "rspec", "~> 3.6.0"
|
30
|
+
spec.add_development_dependency "climate_control"
|
31
|
+
spec.add_development_dependency "webmock"
|
27
32
|
end
|
data/lib/govuk_app_config.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
require "govuk_app_config/version"
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
require "govuk_app_config/govuk_statsd"
|
3
|
+
require "govuk_app_config/govuk_error"
|
4
|
+
require "govuk_app_config/configure"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
if defined?(Airbrake)
|
2
|
+
raise "This gem isn't compatible with Airbrake. Please remove it from the Gemfile."
|
3
|
+
end
|
4
|
+
|
5
|
+
Raven.configure do |config|
|
6
|
+
# We need this until https://github.com/getsentry/raven-ruby/pull/736 is released
|
7
|
+
config.current_environment = ENV["SENTRY_CURRENT_ENV"]
|
8
|
+
|
9
|
+
# We're misusing the `should_capture` block here to hook into raven until
|
10
|
+
# there's a better way: https://github.com/getsentry/raven-ruby/pull/750
|
11
|
+
config.should_capture = Proc.new {
|
12
|
+
GovukStatsd.increment("errors_occurred")
|
13
|
+
|
14
|
+
# For backwards compatibility
|
15
|
+
GovukStatsd.increment("errbit.errors_occurred")
|
16
|
+
|
17
|
+
# Return true so that we don't accidentally skip the error
|
18
|
+
true
|
19
|
+
}
|
20
|
+
|
21
|
+
config.transport_failure_callback = Proc.new {
|
22
|
+
GovukStatsd.increment("error_reports_failed")
|
23
|
+
}
|
24
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "sentry-raven"
|
2
|
+
require "govuk_app_config/govuk_statsd"
|
3
|
+
|
4
|
+
module GovukError
|
5
|
+
def self.notify(exception_or_message, args = {})
|
6
|
+
# Allow users to use `parameters` as a key like the Airbrake
|
7
|
+
# client, allowing easy upgrades.
|
8
|
+
args[:extra] ||= {}
|
9
|
+
args[:extra].merge!(parameters: args.delete(:parameters))
|
10
|
+
|
11
|
+
Raven.capture_exception(exception_or_message, args)
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "statsd"
|
2
|
+
|
3
|
+
module GovukStatsd
|
4
|
+
def self.increment(*args)
|
5
|
+
client.increment(*args)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.client
|
9
|
+
@statsd_client ||= begin
|
10
|
+
statsd_client = ::Statsd.new("localhost")
|
11
|
+
statsd_client.namespace = ENV["GOVUK_STATSD_PREFIX"].to_s
|
12
|
+
statsd_client
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_app_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
@@ -10,6 +10,34 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2017-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: statsd-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.4.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.4.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sentry-raven
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.6.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.6.3
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: bundler
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +80,34 @@ dependencies:
|
|
52
80
|
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: 3.6.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: climate_control
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webmock
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
55
111
|
description: Base configuration for GOV.UK applications
|
56
112
|
email:
|
57
113
|
- govuk-dev@digital.cabinet-office.gov.uk
|
@@ -62,6 +118,7 @@ files:
|
|
62
118
|
- ".gitignore"
|
63
119
|
- ".rspec"
|
64
120
|
- ".ruby-version"
|
121
|
+
- CHANGELOG.md
|
65
122
|
- Gemfile
|
66
123
|
- Jenkinsfile
|
67
124
|
- LICENSE.md
|
@@ -71,6 +128,9 @@ files:
|
|
71
128
|
- bin/setup
|
72
129
|
- govuk_app_config.gemspec
|
73
130
|
- lib/govuk_app_config.rb
|
131
|
+
- lib/govuk_app_config/configure.rb
|
132
|
+
- lib/govuk_app_config/govuk_error.rb
|
133
|
+
- lib/govuk_app_config/govuk_statsd.rb
|
74
134
|
- lib/govuk_app_config/version.rb
|
75
135
|
homepage: https://github.com/alphagov/govuk_app_config
|
76
136
|
licenses:
|