hickory 0.1.1 → 0.1.2

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
- SHA1:
3
- metadata.gz: 8323da74f958271cc269e96d887a91bd2dc9c332
4
- data.tar.gz: '08513b8506eb3d6affff977b7e31c7ab81ee47a8'
2
+ SHA256:
3
+ metadata.gz: 9d315687d17e63b704dc7748ffad0ca866d5d224c42b2469003faff0061881af
4
+ data.tar.gz: 63fd0fb477d88a8b853819daa412b4c6440692f34b2de7174d2e80867144d840
5
5
  SHA512:
6
- metadata.gz: 5ee86b80177c2630e89c80097d022822960f4ab01795db5e439f89cbf61d87f4ac4c9b0be7a0ce25727284856b1ad491b80fe64c2bb4dc5e5a3da6a8e0be9b53
7
- data.tar.gz: 875a82f096b38573f50145474f5e2456b0ca9221ad1685faf4fe80cb10cc00b15e0eb60aca3875d1daacaf801be8d07832d86a4e9f71e9922882d56b1d123060
6
+ metadata.gz: d025b8a858179df3aa938580e1cb9b07daabc7346b029a821f8fae183a4ec093660cf28b688a692c91616c811a97dbda99cba5cfde2045be196781cf8f96951b
7
+ data.tar.gz: 687f88ddf0731a3974bfc2592e4ff802fca7415eab8f48167e578b829e98f5bff9b2e73938f145146d4ac0bd812a54a6ecab77b5c5668da7fcb389699b73b891
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .byebug_history
1
2
  /.bundle/
2
3
  /.yardoc
3
4
  /_yardoc/
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
data/Gemfile.lock CHANGED
@@ -2,21 +2,76 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  hickory (0.1.1)
5
+ activesupport (>= 5.1)
6
+ railties (>= 5.1)
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
8
10
  specs:
11
+ actionpack (6.0.0)
12
+ actionview (= 6.0.0)
13
+ activesupport (= 6.0.0)
14
+ rack (~> 2.0)
15
+ rack-test (>= 0.6.3)
16
+ rails-dom-testing (~> 2.0)
17
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
+ actionview (6.0.0)
19
+ activesupport (= 6.0.0)
20
+ builder (~> 3.1)
21
+ erubi (~> 1.4)
22
+ rails-dom-testing (~> 2.0)
23
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
+ activesupport (6.0.0)
25
+ concurrent-ruby (~> 1.0, >= 1.0.2)
26
+ i18n (>= 0.7, < 2)
27
+ minitest (~> 5.1)
28
+ tzinfo (~> 1.1)
29
+ zeitwerk (~> 2.1, >= 2.1.8)
30
+ builder (3.2.3)
31
+ byebug (11.0.1)
32
+ concurrent-ruby (1.1.5)
33
+ crass (1.0.4)
34
+ erubi (1.8.0)
35
+ i18n (1.6.0)
36
+ concurrent-ruby (~> 1.0)
37
+ loofah (2.2.3)
38
+ crass (~> 1.0.2)
39
+ nokogiri (>= 1.5.9)
40
+ method_source (0.9.2)
41
+ mini_portile2 (2.4.0)
9
42
  minitest (5.11.3)
43
+ nokogiri (1.10.4)
44
+ mini_portile2 (~> 2.4.0)
45
+ rack (2.0.7)
46
+ rack-test (1.1.0)
47
+ rack (>= 1.0, < 3)
48
+ rails-dom-testing (2.0.3)
49
+ activesupport (>= 4.2.0)
50
+ nokogiri (>= 1.6)
51
+ rails-html-sanitizer (1.2.0)
52
+ loofah (~> 2.2, >= 2.2.2)
53
+ railties (6.0.0)
54
+ actionpack (= 6.0.0)
55
+ activesupport (= 6.0.0)
56
+ method_source
57
+ rake (>= 0.8.7)
58
+ thor (>= 0.20.3, < 2.0)
10
59
  rake (10.5.0)
60
+ thor (0.20.3)
61
+ thread_safe (0.3.6)
62
+ tzinfo (1.2.5)
63
+ thread_safe (~> 0.1)
64
+ zeitwerk (2.1.9)
11
65
 
12
66
  PLATFORMS
13
67
  ruby
14
68
 
15
69
  DEPENDENCIES
16
70
  bundler (~> 1.16)
71
+ byebug (~> 11.0, >= 11.0.1)
17
72
  hickory!
18
73
  minitest (~> 5.0)
19
74
  rake (~> 10.0)
20
75
 
21
76
  BUNDLED WITH
22
- 1.16.1
77
+ 1.17.2
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
+ t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "hickory"
3
+ require 'bundler/setup'
4
+ require 'hickory'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "hickory"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/hickory.gemspec CHANGED
@@ -19,7 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
+ spec.add_runtime_dependency 'activesupport', '>= 5.1'
23
+ spec.add_runtime_dependency 'railties', '>= 5.1'
24
+
22
25
  spec.add_development_dependency 'bundler', '~> 1.16'
23
26
  spec.add_development_dependency 'rake', '~> 10.0'
24
27
  spec.add_development_dependency 'minitest', '~> 5.0'
28
+ spec.add_development_dependency 'mocha', '~> 1.9.0'
25
29
  end
data/lib/hickory.rb CHANGED
@@ -1,64 +1,6 @@
1
1
  require 'hickory/logger'
2
+ require 'hickory/rails' if defined? ::Rails
2
3
  require 'hickory/version'
3
4
 
4
5
  module Hickory
5
- module_function
6
-
7
- def initialize_canonical_logs(app)
8
- require 'hickory/ext/rails/rack/logger'
9
-
10
- self.application = app
11
- Hickory.ignore_if = config.ignore_if
12
-
13
- Hickory.remove_existing_log_subscriptions
14
- Hickory::LogSubscribers::ActionController.attach_to :action_controller
15
- Hickory::LogSubscribers::ActionMailer.attach_to :action_mailer
16
- Hickory::LogSubscribers::ActiveJob.attach_to :active_job
17
- end
18
-
19
- def application
20
- @@application
21
- end
22
-
23
- def application=(app)
24
- @@application = app
25
- end
26
-
27
- def ignore_if
28
- @@ignore_if
29
- end
30
-
31
- def ignore_if=(check)
32
- @@ignore_if = check
33
- end
34
-
35
- def config
36
- application.config.hickory
37
- end
38
-
39
- def remove_existing_log_subscriptions
40
- ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
41
- case subscriber
42
- when ActionView::LogSubscriber
43
- unsubscribe(:action_view, subscriber)
44
- when ActionController::LogSubscriber
45
- unsubscribe(:action_controller, subscriber)
46
- when ActionMailer::LogSubscriber
47
- unsubscribe(:action_mailer, subscriber)
48
- when ActiveJob::Logging::LogSubscriber
49
- unsubscribe(:active_job, subscriber)
50
- end
51
- end
52
- end
53
-
54
- def unsubscribe(component, subscriber)
55
- events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
56
- events.each do |event|
57
- ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
58
- if listener.instance_variable_get('@delegate') == subscriber
59
- ActiveSupport::Notifications.unsubscribe listener
60
- end
61
- end
62
- end
63
- end
64
- end
6
+ end
@@ -1,25 +1,31 @@
1
+ require 'json'
2
+
3
+ require 'active_support/json'
4
+ require 'active_support/tagged_logging'
5
+
1
6
  module Hickory
2
7
  module Formatters
3
8
  class JSON < ::Logger::Formatter
9
+ include ActiveSupport::TaggedLogging::Formatter
10
+
4
11
  def initialize(options = {})
5
- @key_mappings = Hash.new.tap { |mapping|
12
+ @key_mapping = Hash.new.tap { |mapping|
6
13
  mapping[:message] = options.fetch(:message_key, :message)
7
14
  mapping[:severity] = options.fetch(:severity_key, :level)
8
15
  mapping[:timestamp] = options.fetch(:timestamp_key, :timestamp)
9
- mapping[:env] = options.fetch(:env_key, :env)
10
16
  }
11
17
  end
12
18
 
13
19
  def call(severity, time, progname, msg)
14
20
  line = msg.tap { |message|
15
- message[@key_mappings[:message]] = msg.delete(:message) unless @key_mappings[:message] == :message
16
- message[@key_mappings[:timestamp]] = time
17
- message[@key_mappings[:severity]] = severity
18
- message[@key_mappings[:env]] = Rails.env
19
- message[:progname] = progname if progname.present?
21
+ message[@key_mapping[:message]] = msg.delete(:message) unless @key_mapping[:message] == :message
22
+ message[@key_mapping[:timestamp]] = time
23
+ message[@key_mapping[:severity]] = severity
24
+ message[:progname] = progname unless progname.nil?
25
+ message[:tags] = current_tags unless current_tags.empty?
20
26
  }
21
27
 
22
- line.to_json
28
+ "#{line.to_json}\n"
23
29
  end
24
30
  end
25
31
  end
@@ -1,11 +1,18 @@
1
+ require 'active_support/tagged_logging'
2
+
1
3
  module Hickory
2
4
  module Formatters
3
5
  class Simple < ::Logger::Formatter
6
+ include ActiveSupport::TaggedLogging::Formatter
7
+
4
8
  def call(severity, time, progname, msg)
5
9
  message = msg.delete(:message)
6
- metadata = msg.map {|k,v| "#{k}=#{v}" }.join(' ')
10
+ metadata = msg.map {|k,v| "#{k}=#{v}" }
11
+
12
+ message.prepend "#{tags_text}" unless current_tags.empty?
13
+ message << " #{metadata.join(' ')}" unless metadata.empty?
7
14
 
8
- "#{message} #{metadata}\n"
15
+ "#{message}\n"
9
16
  end
10
17
  end
11
18
  end
@@ -2,7 +2,7 @@ module Hickory
2
2
  module LogSubscribers
3
3
  class ActionController < ActiveSupport::LogSubscriber
4
4
  def process_action(event)
5
- return if Hickory.ignore_if.present? && Hickory.ignore_if.call(event)
5
+ return if Hickory::Rails.ignore_if.present? && Hickory::Rails.ignore_if.call(event)
6
6
 
7
7
  payload = event.payload
8
8
  default_keys = %i[method format controller action user_id request_id]
@@ -34,7 +34,16 @@ module Hickory
34
34
  end
35
35
  end
36
36
  end
37
- end
38
- end
39
37
 
40
- require 'hickory/railtie' if defined?(Rails)
38
+ delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter
39
+
40
+ def tagged(*tags)
41
+ formatter.tagged(*tags) { yield self }
42
+ end
43
+
44
+ def flush
45
+ clear_tags!
46
+ super if defined?(super)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,55 @@
1
+ require 'active_support/log_subscriber'
2
+ require 'active_support/core_ext/module/attribute_accessors'
3
+
4
+ require 'hickory/rails/railtie'
5
+ require 'hickory/log_subscribers/action_controller'
6
+ require 'hickory/log_subscribers/action_mailer'
7
+ require 'hickory/log_subscribers/active_job'
8
+
9
+ module Hickory
10
+ module Rails
11
+ module_function
12
+
13
+ mattr_accessor :application, :ignore_if
14
+
15
+ def setup(app)
16
+ self.application = app
17
+ self.ignore_if = config.ignore_if
18
+
19
+ remove_existing_log_subscriptions
20
+ Hickory::LogSubscribers::ActionController.attach_to :action_controller
21
+ Hickory::LogSubscribers::ActionMailer.attach_to :action_mailer
22
+ Hickory::LogSubscribers::ActiveJob.attach_to :active_job
23
+ end
24
+
25
+ def config
26
+ application.config.hickory
27
+ end
28
+
29
+ def remove_existing_log_subscriptions
30
+ ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
31
+ case subscriber
32
+ when ActionView::LogSubscriber
33
+ unsubscribe(:action_view, subscriber)
34
+ when ActionController::LogSubscriber
35
+ unsubscribe(:action_controller, subscriber)
36
+ when ActionMailer::LogSubscriber
37
+ unsubscribe(:action_mailer, subscriber)
38
+ when ActiveJob::Logging::LogSubscriber
39
+ unsubscribe(:active_job, subscriber)
40
+ end
41
+ end
42
+ end
43
+
44
+ def unsubscribe(component, subscriber)
45
+ events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
46
+ events.each do |event|
47
+ ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
48
+ if listener.instance_variable_get('@delegate') == subscriber
49
+ ActiveSupport::Notifications.unsubscribe listener
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,15 @@
1
+ require 'rails/railtie'
2
+ require 'active_support/ordered_options'
3
+
4
+ module Hickory
5
+ module Rails
6
+ class Railtie < ::Rails::Railtie
7
+ config.hickory = ActiveSupport::OrderedOptions.new
8
+ config.hickory.enabled = false
9
+
10
+ config.after_initialize do |app|
11
+ Hickory::Rails.setup(app) if app.config.hickory.enabled
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Hickory
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hickory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - blahed
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-28 00:00:00.000000000 Z
11
+ date: 2019-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: railties
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '5.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5.1'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +80,20 @@ dependencies:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mocha
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.9.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.9.0
55
97
  description:
56
98
  email:
57
99
  - trvsdnn@gmail.com
@@ -70,15 +112,14 @@ files:
70
112
  - bin/setup
71
113
  - hickory.gemspec
72
114
  - lib/hickory.rb
73
- - lib/hickory/ext/rails/rack/logger.rb
74
115
  - lib/hickory/formatters/json.rb
75
116
  - lib/hickory/formatters/simple.rb
76
117
  - lib/hickory/log_subscribers/action_controller.rb
77
118
  - lib/hickory/log_subscribers/action_mailer.rb
78
119
  - lib/hickory/log_subscribers/active_job.rb
79
- - lib/hickory/log_subscribers/base.rb
80
120
  - lib/hickory/logger.rb
81
- - lib/hickory/railtie.rb
121
+ - lib/hickory/rails.rb
122
+ - lib/hickory/rails/railtie.rb
82
123
  - lib/hickory/version.rb
83
124
  homepage:
84
125
  licenses:
@@ -99,8 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
140
  - !ruby/object:Gem::Version
100
141
  version: '0'
101
142
  requirements: []
102
- rubyforge_project:
103
- rubygems_version: 2.5.2
143
+ rubygems_version: 3.0.3
104
144
  signing_key:
105
145
  specification_version: 4
106
146
  summary: An opinionated logger for rails and ruby.
@@ -1,21 +0,0 @@
1
- require 'active_support/concern'
2
- require 'rails/rack/logger'
3
-
4
- module Rails
5
- module Rack
6
- # Overwrites defaults of Rails::Rack::Logger that cause
7
- # unnecessary logging.
8
- # This effectively removes the log lines from the log
9
- # that say:
10
- # Started GET / for 192.168.2.1...
11
- class Logger
12
- # Overwrites Rails 3.2 code that logs new requests
13
- def call_app(*args)
14
- env = args.last
15
- @app.call(env)
16
- ensure
17
- ActiveSupport::LogSubscriber.flush_all!
18
- end
19
- end
20
- end
21
- end
@@ -1,68 +0,0 @@
1
- require 'json'
2
- require 'action_pack'
3
- require 'active_support/core_ext/class/attribute'
4
- require 'active_support/log_subscriber'
5
- # require 'action_view/log_subscriber'
6
- # require 'action_controller/log_subscriber'
7
- # require 'request_store'
8
-
9
- module Hickory
10
- module LogSubscribers
11
- class Base < ActiveSupport::LogSubscriber
12
- # def logger
13
- # Lograge.logger.presence || super
14
- # end
15
-
16
- private
17
-
18
- # def process_main_event(event)
19
- # # return if Lograge.ignore?(event)
20
- #
21
- # payload = event.payload
22
- # data = extract_request(event, payload)
23
- # data = before_format(data, payload)
24
- # formatted_message = Lograge.formatter.call(data)
25
- # logger.send(Lograge.log_level, formatted_message)
26
- # end
27
- #
28
- # def extract_request(event, payload)
29
- # data = initial_data(payload)
30
- # data.merge!(extract_status(payload))
31
- # data.merge!(extract_runtimes(event, payload))
32
- # data.merge!(extract_location)
33
- # data.merge!(extract_unpermitted_params)
34
- # data.merge!(custom_options(event))
35
- # end
36
- #
37
- # %i(initial_data extract_status extract_runtimes
38
- # extract_location extract_unpermitted_params).each do |method_name|
39
- # define_method(method_name) { |*_arg| {} }
40
- # end
41
- #
42
- # def extract_status(payload)
43
- # if (status = payload[:status])
44
- # { status: status.to_i }
45
- # elsif (error = payload[:exception])
46
- # exception, message = error
47
- # { status: get_error_status_code(exception), error: "#{exception}: #{message}" }
48
- # else
49
- # { status: 0 }
50
- # end
51
- # end
52
- #
53
- # def get_error_status_code(exception)
54
- # status = ActionDispatch::ExceptionWrapper.rescue_responses[exception]
55
- # Rack::Utils.status_code(status)
56
- # end
57
- #
58
- # def custom_options(event)
59
- # options = Lograge.custom_options(event) || {}
60
- # options.merge event.payload[:custom_payload] || {}
61
- # end
62
- #
63
- # def before_format(data, payload)
64
- # Lograge.before_format(data, payload)
65
- # end
66
- end
67
- end
68
- end
@@ -1,18 +0,0 @@
1
- require 'rails/railtie'
2
- require 'active_support/ordered_options'
3
-
4
- # require 'hickory/log_subscribers/base'
5
- require 'hickory/log_subscribers/action_controller'
6
- require 'hickory/log_subscribers/action_mailer'
7
- require 'hickory/log_subscribers/active_job'
8
-
9
- module Hickory
10
- class Railtie < Rails::Railtie
11
- config.hickory = ActiveSupport::OrderedOptions.new
12
- config.hickory.canonical_request_lines = false
13
-
14
- config.after_initialize do |app|
15
- Hickory.initialize_canonical_logs(app) if app.config.hickory.canonical_request_lines
16
- end
17
- end
18
- end