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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98a8a59da71bc03d6c9b93eb8f8f60f717b9b12ebb94db3ef2a6fd5cbd0c18f1
4
- data.tar.gz: 1ce9b1f812aafdf52c58466b20e0cc3803215ae389b6ae5d29af10b5ae43a1e0
3
+ metadata.gz: 37e629a537e2eacaa23cf9987e2d8645c03117d1e6c4ee0c4548f7a6ecdff82c
4
+ data.tar.gz: f8e50daacfdb1c156031de6dde69dd929f38823a243f25f2eb0ccf03ffa224d3
5
5
  SHA512:
6
- metadata.gz: 0e1c394b12b539e2135fa79ba0397aa53dad89059a16c632d1d13b2bdb7db6c0cdb301ada258722e9d6047ab911ec0af673c09c7e1cb1a680f5e191c25a63d14
7
- data.tar.gz: a1480ed7d4d2d80c63ddc092535cf498ab88234599df146e0f47496f57a4225873ef4812ab60710081f6874d75df543bf02c7eb96d3163dc8fbf73a829838a48
6
+ metadata.gz: 1071e274a8216f2ab8438b59fed1063e760952c7202d0368f9ba205e7520cd780a6bf4d903c364e7662e63e309936d6af1c95febf332a44d18d47387a4177424
7
+ data.tar.gz: 6bbe481d434f6a814377d81090225ef5d08cf68d1dae10088ad7ec8579d61195cefdece286c25809ae35f9afe26ab155f130342893e9ad6a356c5b01f34bdc72
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ *.gem
2
+ /.idea
data/README.md ADDED
@@ -0,0 +1,10 @@
1
+ To upload the latest version to RubyGems.org:
2
+
3
+ 1. Increase version
4
+
5
+ 2. Build & publish (assuming the new version is `0.1.0`):
6
+
7
+ ```bash
8
+ gem build hubrise_initializer
9
+ gem push hubrise_initializer-*.gem
10
+ ```
@@ -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
@@ -2,101 +2,85 @@ require 'lograge'
2
2
  require 'act-fluent-logger-rails'
3
3
 
4
4
  class HubriseInitializer
5
- def self.configure(config, *initializers)
6
- initializers.each do |initializer|
7
- case initializer
8
- when :logger
9
- configure_logger(config)
10
- when :lograge
11
- configure_lograge(config)
12
- when :delayed_job_logger
13
- configure_delayed_job_logger(config)
14
- when :web_console
15
- configure_web_console(config)
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
- def self.configure_logger(config)
23
- if log_level = ENV['RAILS_LOG_LEVEL']
24
- config.log_level = log_level
25
- end
19
+ private
26
20
 
27
- case ENV['RAILS_LOGGER']
28
- when 'stdout'
29
- # Log to STDOUT (docker-compose)
30
- config.logger = Logger.new(STDOUT)
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
- when 'fluentd'
33
- # Log to fluentd (kubernetes)
34
- # ENV['FLUENTD_URL'] is used internally by this logger
35
- config.logger = ActFluentLoggerRails::Logger.new
27
+ case ENV['RAILS_LOGGER']
28
+ when 'stdout'
29
+ # Log to STDOUT (docker-compose)
30
+ config.logger = Logger.new(STDOUT)
36
31
 
37
- else
38
- # Log to a file (Rails default)
39
- end
40
- end
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
- def self.configure_lograge(config)
43
- case ENV['RAILS_LOGGER']
44
- when 'stdout'
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
- when 'fluentd'
48
- # Log to fluentd (kubernetes)
49
- config.lograge.enabled = true
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
- config.lograge.ignore_actions = ["HealthCheck::HealthCheckController#index"]
45
+ if ENV['RAILS_LOGRAGE_SQL'] == 'true'
46
+ require 'lograge/sql/extension'
47
+ end
54
48
 
55
- config.lograge.custom_options = lambda do |event|
56
- exceptions = %w(controller action format id)
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
- config.lograge.custom_payload do |controller|
64
- {
65
- release: ENV['RELEASE'],
66
- host: controller.request.host,
67
- ip: controller.request.ip,
68
- user_agent: controller.request.user_agent
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
- when 'fluentd'
83
- # Log to fluentd (kubernetes)
84
- # ENV['FLUENTD_URL'] is used internally by this logger
85
- Delayed::Worker.logger = ActFluentLoggerRails::Logger.new
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
- else
88
- # Log to a file
89
- Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))
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-18 00:00:00.000000000 Z
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