govuk_app_config 0.3.0 → 1.0.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/.ruby-version +1 -1
- data/CHANGELOG.md +14 -1
- data/README.md +12 -0
- data/govuk_app_config.gemspec +3 -1
- data/lib/govuk_app_config.rb +2 -0
- data/lib/govuk_app_config/configure.rb +13 -3
- data/lib/govuk_app_config/govuk_logging.rb +52 -0
- data/lib/govuk_app_config/railtie.rb +7 -0
- data/lib/govuk_app_config/version.rb +1 -1
- metadata +35 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c1aa04a3723ed9121a0a5396efcde54f888c923
|
4
|
+
data.tar.gz: 6d8e1e534ed8f3969ac2aa9f59ea575572d45ae7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 171cf7e15d152cbc6675be11cdd076f3e741588a9d6459455c4fddab83e00d76d754fa04630944fd39dbeb2962f94dbb4ce75fa6ecfd5aa7a561c179ad1eddd7
|
7
|
+
data.tar.gz: 95b2fe9fe50983cb1c687d52b1b2d7c98d303e0a6e0708b2753106739eb3619e28520b5d2c7b90cc40b48c78f0d1bd32fa42c113daac47ca0b4c6598bc99071a
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.4.
|
1
|
+
2.4.2
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,17 @@
|
|
1
|
-
#
|
1
|
+
# 1.0.0
|
2
|
+
|
3
|
+
* Add Unicorn (our web server) as a dependency
|
4
|
+
* Use version [2.7.0 of the Sentry client][sentry-270].
|
5
|
+
* Set up logging configuration for Rails applications.
|
6
|
+
* Don't send `ActionController::BadRequest`
to Sentry
|
7
|
+
|
8
|
+
[sentry-270]: https://github.com/getsentry/raven-ruby/commit/ef623824cb0a8a2f60be5fb7e12f80454da54fd7
|
9
|
+
|
10
|
+
### How to upgrade
|
11
|
+
|
12
|
+
* Remove `gem 'unicorn'` from your Gemfile
|
13
|
+
* Remove `gem 'logstasher'` from your Gemfile
|
14
|
+
* Remove all `config.logstasher.*` configs from `config/production.rb`
|
2
15
|
|
3
16
|
## 0.3.0
|
4
17
|
|
data/README.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# GOV.UK Config
|
2
2
|
|
3
|
+
Adds the basics of a GOV.UK application:
|
4
|
+
|
5
|
+
- Unicorn as a web server
|
6
|
+
- Error reporting with Sentry
|
7
|
+
- Statsd client for reporting stats
|
8
|
+
|
3
9
|
## Installation
|
4
10
|
|
5
11
|
Add this line to your application's Gemfile:
|
@@ -14,6 +20,12 @@ And then execute:
|
|
14
20
|
|
15
21
|
## Usage
|
16
22
|
|
23
|
+
## Unicorn
|
24
|
+
|
25
|
+
No configuration required.
|
26
|
+
|
27
|
+
## Error reporting
|
28
|
+
|
17
29
|
### Automatic error reporting
|
18
30
|
|
19
31
|
If you include `govuk_app_config` in your `Gemfile`, Rails' autoloading mechanism will make sure that your application is configured to send errors to Sentry.
|
data/govuk_app_config.gemspec
CHANGED
@@ -22,7 +22,9 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
24
|
spec.add_dependency "statsd-ruby", "~> 1.4.0"
|
25
|
-
spec.add_dependency "
|
25
|
+
spec.add_dependency "logstasher", "~> 1.2.2"
|
26
|
+
spec.add_dependency "sentry-raven", "~> 2.7.1"
|
27
|
+
spec.add_dependency "unicorn", "~> 5.3.1"
|
26
28
|
|
27
29
|
spec.add_development_dependency "bundler", "~> 1.15"
|
28
30
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/govuk_app_config.rb
CHANGED
@@ -3,9 +3,6 @@ if defined?(Airbrake)
|
|
3
3
|
end
|
4
4
|
|
5
5
|
GovukError.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
6
|
# We're misusing the `should_capture` block here to hook into raven until
|
10
7
|
# there's a better way: https://github.com/getsentry/raven-ruby/pull/750
|
11
8
|
config.should_capture = Proc.new {
|
@@ -18,6 +15,19 @@ GovukError.configure do |config|
|
|
18
15
|
true
|
19
16
|
}
|
20
17
|
|
18
|
+
config.excluded_exceptions = [
|
19
|
+
'AbstractController::ActionNotFound',
|
20
|
+
'ActionController::BadRequest',
|
21
|
+
'ActionController::InvalidAuthenticityToken',
|
22
|
+
'ActionController::RoutingError',
|
23
|
+
'ActionController::UnknownAction',
|
24
|
+
'ActiveJob::DeserializationError',
|
25
|
+
'ActiveRecord::RecordNotFound',
|
26
|
+
'CGI::Session::CookieStore::TamperedWithCookie',
|
27
|
+
'Mongoid::Errors::DocumentNotFound',
|
28
|
+
'Sinatra::NotFound',
|
29
|
+
]
|
30
|
+
|
21
31
|
config.transport_failure_callback = Proc.new {
|
22
32
|
GovukStatsd.increment("error_reports_failed")
|
23
33
|
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Rails applications have 2 outputs types:
|
2
|
+
#
|
3
|
+
# 1) Structured logging statements like the ones we create with
|
4
|
+
# `Rails.logger.info` and Rails request logging, which we do with the logstasher
|
5
|
+
# gem. These logs are output in JSON and can be read easily by our logging
|
6
|
+
# stack.
|
7
|
+
#
|
8
|
+
# 2) The second are logs that are outputted when an exception occurs or `puts`
|
9
|
+
# is used directly. This is unstructured text. Often this logging is sent to
|
10
|
+
# STDOUT directly.
|
11
|
+
#
|
12
|
+
# We want to differentiate between the two types. To do this, we direct all log
|
13
|
+
# statements that would _normally_ go to STDOUT to STDERR. This frees up the "real
|
14
|
+
# stdout" for use by our loggers.
|
15
|
+
$real_stdout = $stdout.clone
|
16
|
+
$stdout.reopen($stderr)
|
17
|
+
|
18
|
+
require 'logstasher'
|
19
|
+
|
20
|
+
module GovukLogging
|
21
|
+
def self.configure
|
22
|
+
# Send Rails' logs to STDERR because they're not JSON formatted.
|
23
|
+
Rails.logger = ActiveSupport::TaggedLogging.new(Logger.new($stderr))
|
24
|
+
|
25
|
+
# Custom that will be added to the Rails request logs
|
26
|
+
LogStasher.add_custom_fields do |fields|
|
27
|
+
# Mirrors Nginx request logging, e.g GET /path/here HTTP/1.1
|
28
|
+
fields[:request] = "#{request.request_method} #{request.fullpath} #{request.headers["SERVER_PROTOCOL"]}"
|
29
|
+
|
30
|
+
# Pass request Id to logging
|
31
|
+
fields[:govuk_request_id] = request.headers["GOVUK-Request-Id"]
|
32
|
+
|
33
|
+
fields[:varnish_id] = request.headers["X-Varnish"]
|
34
|
+
|
35
|
+
fields[:govuk_app_config] = GovukAppConfig::VERSION
|
36
|
+
end
|
37
|
+
|
38
|
+
Rails.application.config.logstasher.enabled = true
|
39
|
+
|
40
|
+
# Log controller actions so that we can graph response times
|
41
|
+
Rails.application.config.logstasher.controller_enabled = true
|
42
|
+
|
43
|
+
# The other loggers are not that interesting in production
|
44
|
+
Rails.application.config.logstasher.mailer_enabled = false
|
45
|
+
Rails.application.config.logstasher.record_enabled = false
|
46
|
+
Rails.application.config.logstasher.view_enabled = false
|
47
|
+
Rails.application.config.logstasher.job_enabled = false
|
48
|
+
|
49
|
+
Rails.application.config.logstasher.logger = Logger.new($real_stdout)
|
50
|
+
Rails.application.config.logstasher.supress_app_log = true
|
51
|
+
end
|
52
|
+
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: 0.
|
4
|
+
version: 1.0.0
|
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: 2017-
|
11
|
+
date: 2017-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: statsd-ruby
|
@@ -24,20 +24,48 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.4.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: logstasher
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.2
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: sentry-raven
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
47
|
+
version: 2.7.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.7.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: unicorn
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 5.3.1
|
34
62
|
type: :runtime
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
66
|
- - "~>"
|
39
67
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
68
|
+
version: 5.3.1
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: bundler
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +158,9 @@ files:
|
|
130
158
|
- lib/govuk_app_config.rb
|
131
159
|
- lib/govuk_app_config/configure.rb
|
132
160
|
- lib/govuk_app_config/govuk_error.rb
|
161
|
+
- lib/govuk_app_config/govuk_logging.rb
|
133
162
|
- lib/govuk_app_config/govuk_statsd.rb
|
163
|
+
- lib/govuk_app_config/railtie.rb
|
134
164
|
- lib/govuk_app_config/version.rb
|
135
165
|
homepage: https://github.com/alphagov/govuk_app_config
|
136
166
|
licenses:
|
@@ -152,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
182
|
version: '0'
|
153
183
|
requirements: []
|
154
184
|
rubyforge_project:
|
155
|
-
rubygems_version: 2.6.
|
185
|
+
rubygems_version: 2.6.13
|
156
186
|
signing_key:
|
157
187
|
specification_version: 4
|
158
188
|
summary: Base configuration for GOV.UK applications
|