hubrise_initializer 0.1.3 → 0.1.3.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 +4 -4
- data/.gitignore +2 -0
- data/README.md +10 -0
- data/hubrise_initializer.gemspec +18 -0
- data/lib/hubrise_initializer.rb +63 -79
- data/lib/hubrise_initializer/lograge.rb +52 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37e629a537e2eacaa23cf9987e2d8645c03117d1e6c4ee0c4548f7a6ecdff82c
|
4
|
+
data.tar.gz: f8e50daacfdb1c156031de6dde69dd929f38823a243f25f2eb0ccf03ffa224d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1071e274a8216f2ab8438b59fed1063e760952c7202d0368f9ba205e7520cd780a6bf4d903c364e7662e63e309936d6af1c95febf332a44d18d47387a4177424
|
7
|
+
data.tar.gz: 6bbe481d434f6a814377d81090225ef5d08cf68d1dae10088ad7ec8579d61195cefdece286c25809ae35f9afe26ab155f130342893e9ad6a356c5b01f34bdc72
|
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'hubrise_initializer'
|
3
|
+
spec.version = '0.1.3.1'
|
4
|
+
|
5
|
+
spec.require_paths = ['lib']
|
6
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
7
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
8
|
+
end
|
9
|
+
|
10
|
+
spec.authors = ["Antoine Monnier"]
|
11
|
+
spec.summary = "Rails app initializers optimized for HubRise"
|
12
|
+
spec.homepage = "https://github.com/hubrise/rails-initializer.git"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.add_runtime_dependency 'lograge', '~> 0.11'
|
16
|
+
spec.add_runtime_dependency 'act-fluent-logger-rails', '~> 0.5'
|
17
|
+
spec.add_runtime_dependency 'logstash-event', '~> 1.2'
|
18
|
+
end
|
data/lib/hubrise_initializer.rb
CHANGED
@@ -2,101 +2,85 @@ require 'lograge'
|
|
2
2
|
require 'act-fluent-logger-rails'
|
3
3
|
|
4
4
|
class HubriseInitializer
|
5
|
-
|
6
|
-
initializers
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
class << self
|
6
|
+
def configure(*initializers)
|
7
|
+
initializers.each do |initializer|
|
8
|
+
case initializer
|
9
|
+
when :logger
|
10
|
+
configure_logger
|
11
|
+
when :delayed_job_logger
|
12
|
+
configure_delayed_job_logger
|
13
|
+
when :web_console
|
14
|
+
configure_web_console
|
15
|
+
end
|
16
16
|
end
|
17
17
|
end
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
18
|
|
22
|
-
|
23
|
-
if log_level = ENV['RAILS_LOG_LEVEL']
|
24
|
-
config.log_level = log_level
|
25
|
-
end
|
19
|
+
private
|
26
20
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
21
|
+
def configure_logger
|
22
|
+
Rails.application.configure do
|
23
|
+
if log_level = ENV['RAILS_LOG_LEVEL']
|
24
|
+
config.log_level = log_level
|
25
|
+
end
|
31
26
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
case ENV['RAILS_LOGGER']
|
28
|
+
when 'stdout'
|
29
|
+
# Log to STDOUT (docker-compose)
|
30
|
+
config.logger = Logger.new(STDOUT)
|
36
31
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
32
|
+
when 'fluentd'
|
33
|
+
# Log to fluentd (kubernetes)
|
34
|
+
# ENV['FLUENTD_URL'] is used internally by this logger
|
35
|
+
config.logger = ActFluentLoggerRails::Logger.new
|
41
36
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
# Log to STDOUT (docker-compose)
|
37
|
+
config.lograge.enabled = true
|
38
|
+
config.lograge.formatter = ::Lograge::Formatters::Logstash.new
|
39
|
+
config.lograge.formatter = ::Lograge::Formatters::Json.new
|
46
40
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
config.lograge.formatter = Lograge::Formatters::Logstash.new
|
51
|
-
config.lograge.formatter = Lograge::Formatters::Json.new
|
41
|
+
config.lograge.ignore_actions = ["HealthCheck::HealthCheckController#index"]
|
42
|
+
config.lograge.custom_options = lambda { |event| HubriseInitializer::Lograge.custom_options(event) }
|
43
|
+
config.lograge.custom_payload { |controller| HubriseInitializer::Lograge.custom_payload(controller) }
|
52
44
|
|
53
|
-
|
45
|
+
if ENV['RAILS_LOGRAGE_SQL'] == 'true'
|
46
|
+
require 'lograge/sql/extension'
|
47
|
+
end
|
54
48
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
params: event.payload[:params].except(*exceptions),
|
59
|
-
# payload: event.payload.inspect,
|
60
|
-
}
|
49
|
+
else
|
50
|
+
# Log to a file (Rails default)
|
51
|
+
end
|
61
52
|
end
|
53
|
+
end
|
62
54
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
55
|
+
def configure_delayed_job_logger
|
56
|
+
Rails.application.configure do
|
57
|
+
case ENV['RAILS_LOGGER']
|
58
|
+
when 'stdout'
|
59
|
+
# Log to STDOUT (docker-compose)
|
60
|
+
Delayed::Worker.logger = Logger.new(STDOUT)
|
61
|
+
|
62
|
+
when 'fluentd'
|
63
|
+
# Log to fluentd (kubernetes)
|
64
|
+
# ENV['FLUENTD_URL'] is used internally by this logger
|
65
|
+
Delayed::Worker.logger = ActFluentLoggerRails::Logger.new
|
66
|
+
|
67
|
+
else
|
68
|
+
# Log to a file
|
69
|
+
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))
|
70
|
+
end
|
70
71
|
end
|
71
|
-
else
|
72
|
-
# Log to a file (Rails default)
|
73
72
|
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def self.configure_delayed_job_logger(config)
|
77
|
-
case ENV['RAILS_LOGGER']
|
78
|
-
when 'stdout'
|
79
|
-
# Log to STDOUT (docker-compose)
|
80
|
-
Delayed::Worker.logger = Logger.new(STDOUT)
|
81
73
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
74
|
+
def configure_web_console
|
75
|
+
Rails.application.configure do
|
76
|
+
# web_console is generally enabled on dev only
|
77
|
+
return if !config.respond_to?(:web_console)
|
86
78
|
|
87
|
-
|
88
|
-
|
89
|
-
|
79
|
+
# - 172.0.0.0/8: host in docker-compose
|
80
|
+
# - 192.168.0.0/16: inter containers network in docker-compose
|
81
|
+
# - 10.244.0.0/16: pod networks in Kubernetes
|
82
|
+
config.web_console.whitelisted_ips = ['172.0.0.0/8', '192.168.0.0/16', '10.0.0.0/8']
|
83
|
+
end
|
90
84
|
end
|
91
85
|
end
|
92
|
-
|
93
|
-
def self.configure_web_console(config)
|
94
|
-
# web_console is generally enabled on dev only
|
95
|
-
return if !config.respond_to?(:web_console)
|
96
|
-
|
97
|
-
# - 172.0.0.0/8: host in docker-compose
|
98
|
-
# - 192.168.0.0/16: inter containers network in docker-compose
|
99
|
-
# - 10.244.0.0/16: pod networks in Kubernetes
|
100
|
-
config.web_console.whitelisted_ips = ['172.0.0.0/8', '192.168.0.0/16', '10.244.0.0/16']
|
101
|
-
end
|
102
86
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative '../hubrise_initializer'
|
2
|
+
|
3
|
+
class HubriseInitializer
|
4
|
+
class Lograge
|
5
|
+
class << self
|
6
|
+
def custom_options(event)
|
7
|
+
{}
|
8
|
+
end
|
9
|
+
|
10
|
+
def custom_payload(controller)
|
11
|
+
request, response = controller.request, controller.response
|
12
|
+
{
|
13
|
+
release: ENV['RELEASE'],
|
14
|
+
host: request.host,
|
15
|
+
ip: request.ip,
|
16
|
+
user_agent: request.user_agent,
|
17
|
+
params: request.query_string.presence
|
18
|
+
}.merge(
|
19
|
+
if ENV['RAILS_LOGRAGE_QUERY'] == 'true'
|
20
|
+
{
|
21
|
+
request_headers: process_request_headers(request).to_s,
|
22
|
+
request_body: truncate_body(request.raw_post),
|
23
|
+
response_headers: response.headers.to_h.to_s,
|
24
|
+
response_body: truncate_body(response.body),
|
25
|
+
}
|
26
|
+
else
|
27
|
+
{}
|
28
|
+
end
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
TRUNCATED_BODY_MAX_LENGTH = 1000
|
35
|
+
|
36
|
+
def truncate_body(s)
|
37
|
+
s.present? ? s.squish.truncate(TRUNCATED_BODY_MAX_LENGTH, omission: '...') : nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def process_request_headers(request)
|
41
|
+
http_prefix = 'HTTP_'
|
42
|
+
request.headers.inject({}) do |hash, (key, value)|
|
43
|
+
next hash if !key.start_with?(http_prefix)
|
44
|
+
|
45
|
+
header_name = key.gsub(http_prefix, '').split('_').map(&:capitalize).join('-')
|
46
|
+
hash[header_name] = value
|
47
|
+
hash
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hubrise_initializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.3
|
4
|
+
version: 0.1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antoine Monnier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lograge
|
@@ -58,7 +58,11 @@ executables: []
|
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
+
- ".gitignore"
|
62
|
+
- README.md
|
63
|
+
- hubrise_initializer.gemspec
|
61
64
|
- lib/hubrise_initializer.rb
|
65
|
+
- lib/hubrise_initializer/lograge.rb
|
62
66
|
homepage: https://github.com/hubrise/rails-initializer.git
|
63
67
|
licenses:
|
64
68
|
- MIT
|