hubrise_initializer 0.1.3 → 0.1.3.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: 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