onelinejson 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/onelinejson.rb CHANGED
@@ -6,95 +6,6 @@ require 'active_support/core_ext/class/attribute'
6
6
  require 'active_support/log_subscriber'
7
7
 
8
8
  module Onelinejson
9
- class TestSubscriber < ActiveSupport::LogSubscriber
10
- def process_action(event)
11
- return if ::Lograge.ignore?(event)
12
-
13
- data = {
14
- request: {},
15
- response: {},
16
- debug_info: {}
17
- }
18
- payload = event.payload
19
-
20
- data[:request].merge! extract_request(payload)
21
- data[:response].merge! extract_status(payload)
22
- data[:response].merge! runtimes(event)
23
- data[:response].merge! location(event)
24
- data.merge! custom_options(event)
25
-
26
- formatted_message = ::Lograge.formatter.call(data)
27
- logger.send(::Lograge.log_level, formatted_message)
28
- end
29
-
30
- def redirect_to(event)
31
- Thread.current[:lograge_location] = event.payload[:location]
32
- end
33
-
34
- def logger
35
- ::Lograge.logger.presence or super
36
- end
37
-
38
- private
39
-
40
- def extract_request(payload)
41
- Hash[{
42
- :method => payload[:method],
43
- :path => extract_path(payload),
44
- :format => extract_format(payload),
45
- :controller => payload[:params]['controller'],
46
- :action => payload[:params]['action'],
47
- }.merge(payload[:request]).sort]
48
- end
49
-
50
- def extract_path(payload)
51
- payload[:path].split("?").first
52
- end
53
-
54
- def extract_format(payload)
55
- if ::ActionPack::VERSION::MAJOR == 3 && ::ActionPack::VERSION::MINOR == 0
56
- payload[:formats].first
57
- else
58
- payload[:format]
59
- end
60
- end
61
-
62
- def extract_status(payload)
63
- if payload[:status]
64
- { :status => payload[:status].to_i }
65
- elsif payload[:exception]
66
- exception, message = payload[:exception]
67
- { :status => 500, :error => "#{exception}:#{message}" }
68
- else
69
- { :status => 0 }
70
- end
71
- end
72
-
73
- def custom_options(event)
74
- ::Lograge.custom_options(event) || {}
75
- end
76
-
77
- def runtimes(event)
78
- {
79
- :duration => event.duration,
80
- :view => event.payload[:view_runtime],
81
- :db => event.payload[:db_runtime]
82
- }.inject({}) do |runtimes, (name, runtime)|
83
- runtimes[name] = runtime.to_f.round(2) if runtime
84
- runtimes
85
- end
86
- end
87
-
88
- def location(event)
89
- if location = Thread.current[:lograge_location]
90
- Thread.current[:lograge_location] = nil
91
- { :location => location }
92
- else
93
- {}
94
- end
95
- end
96
- end
97
-
98
9
  module AppControllerMethods
99
10
  def append_info_to_payload(payload)
100
11
  super
@@ -115,21 +26,28 @@ module Onelinejson
115
26
  date: Time.now.utc.iso8601,
116
27
  }
117
28
  payload[:request][:user_id] = current_user.id if defined?(current_user) && current_user
118
- end
119
- end
120
29
 
121
- class JsonFormatter
122
- def call(data)
123
- ::JSON.dump(data)
124
30
  end
125
31
  end
126
32
 
127
33
  class Railtie < Rails::Railtie
128
34
  config.lograge = ActiveSupport::OrderedOptions.new
129
- config.lograge.subscriber = TestSubscriber
130
- config.lograge.formatter = JsonFormatter.new
35
+ config.lograge.formatter = ::Lograge::Formatters::Json.new
131
36
  config.lograge.enabled = true
132
-
37
+ config.lograge.before_format = lambda do |data, payload|
38
+ data.merge(payload)
39
+ request = payload[:request].merge(data.select{ |k,_|
40
+ [:method, :path, :format, :controller, :action].include?(k)
41
+ })
42
+ response = data.select{ |k,_|
43
+ [:status, :duration, :view, :view_runtime].include?(k)
44
+ }
45
+ Hash[{
46
+ request: request,
47
+ response: response,
48
+ debug_info: payload[:debug_info]
49
+ }.sort]
50
+ end
133
51
  ActiveSupport.on_load(:action_controller) do
134
52
  include AppControllerMethods
135
53
  end
@@ -1,3 +1,3 @@
1
1
  module Onelinejson
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onelinejson
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-19 00:00:00.000000000 Z
12
+ date: 2013-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: lograge