wildsight 0.1.11 → 0.1.12
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/lib/wildsight/agent/agent.rb +3 -2
- data/lib/wildsight/context/active_record.rb +17 -0
- data/lib/wildsight/context/context.rb +15 -13
- data/lib/wildsight/context/exception.rb +24 -0
- data/lib/wildsight/context/logger.rb +7 -3
- data/lib/wildsight/context/rack.rb +26 -30
- data/lib/wildsight/context/rails.rb +31 -0
- data/lib/wildsight/profiler/profiler.rb +33 -0
- data/lib/wildsight/rack/middleware_context.rb +2 -2
- data/lib/wildsight/rails/railtie.rb +86 -40
- data/lib/wildsight/transport/faraday.rb +2 -4
- data/lib/wildsight/transport/net_http.rb +2 -3
- data/lib/wildsight/version.rb +1 -1
- data/lib/wildsight_custom.rb +1 -1
- metadata +7 -5
- data/lib/wildsight/context/sql.rb +0 -13
- data/lib/wildsight/rack/middleware_exception.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0b043b6bdf567a187eaf195729978ab7b187fe1
|
4
|
+
data.tar.gz: 79421c3cba0177185caf0f8235512a7a93c0c162
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffcaec0911490b358e86cd2a251fc71b25d7c9be9b2bc9f0ff9ea10aa34dea60e83b308721d374f4c27c892828ef16658e74be31ce305a866cda196ba3e4b5a8
|
7
|
+
data.tar.gz: 6d9e9cb8c1f5c19cc59912c35b156105a5fab5356ecb49ab8676276ccd689bf12da971fdb1e4552fe01a4785b0cd00b3ae61dbb55f37e5c7a2662e145c84e380
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'securerandom'
|
2
|
+
require 'pp'
|
2
3
|
|
3
4
|
require 'wildsight/agent/tools'
|
4
5
|
require 'wildsight/agent/config'
|
@@ -50,7 +51,7 @@ module Wildsight
|
|
50
51
|
@contexts.delete(name)
|
51
52
|
end
|
52
53
|
|
53
|
-
def
|
54
|
+
def submit(event)
|
54
55
|
@events << event
|
55
56
|
if @events.size > @config['agent']['threshold']
|
56
57
|
self.logger.log(:debug) { 'Uploading collected data' }
|
@@ -60,7 +61,7 @@ module Wildsight
|
|
60
61
|
|
61
62
|
def upload
|
62
63
|
payload, @events = @events, []
|
63
|
-
@transport.send(payload)
|
64
|
+
@transport.send(payload) if payload != nil && payload.size > 0
|
64
65
|
end
|
65
66
|
|
66
67
|
private
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'wildsight/context/rack'
|
2
|
+
require 'wildsight/context/rails'
|
2
3
|
require 'wildsight/context/logger'
|
3
|
-
require 'wildsight/context/
|
4
|
+
require 'wildsight/context/exception'
|
5
|
+
require 'wildsight/context/active_record'
|
4
6
|
|
5
7
|
module Wildsight
|
6
8
|
module Context
|
@@ -11,9 +13,11 @@ module Wildsight
|
|
11
13
|
|
12
14
|
class Context
|
13
15
|
|
14
|
-
include Wildsight::Context::Rack
|
15
16
|
include Wildsight::Context::Logs
|
16
|
-
include Wildsight::Context::
|
17
|
+
include Wildsight::Context::Exception
|
18
|
+
include Wildsight::Context::Rack
|
19
|
+
include Wildsight::Context::Rails
|
20
|
+
include Wildsight::Context::ActiveRecord
|
17
21
|
|
18
22
|
attr_reader :name
|
19
23
|
|
@@ -23,8 +27,8 @@ module Wildsight
|
|
23
27
|
@data = {}
|
24
28
|
end
|
25
29
|
|
26
|
-
def
|
27
|
-
@agent.
|
30
|
+
def submit
|
31
|
+
@agent.submit({ :context => { :id => @name }, :payload => @data })
|
28
32
|
end
|
29
33
|
|
30
34
|
def unregister
|
@@ -39,18 +43,16 @@ module Wildsight
|
|
39
43
|
thread.thread_variable_set('wildsight.context', nil)
|
40
44
|
end
|
41
45
|
|
42
|
-
def
|
43
|
-
@data
|
46
|
+
def data
|
47
|
+
@data
|
44
48
|
end
|
45
49
|
|
46
|
-
def
|
47
|
-
|
50
|
+
def profiler
|
51
|
+
@profiler ||= ::Wildsight::Profiler::Profiler.new(self)
|
48
52
|
end
|
49
53
|
|
50
|
-
def
|
51
|
-
|
52
|
-
data[:cause] = extract_exception(exception.cause) if exception.cause
|
53
|
-
return data
|
54
|
+
def self.thread_context_id(thread=Thread.current)
|
55
|
+
thread.thread_variable_get('wildsight.context')
|
54
56
|
end
|
55
57
|
|
56
58
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Wildsight
|
2
|
+
module Context
|
3
|
+
|
4
|
+
module Exception
|
5
|
+
|
6
|
+
def exception_data
|
7
|
+
@data[:exceptions] = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def exception_report(exception)
|
11
|
+
exception_data << exception_extract(exception)
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def exception_extract(exception)
|
16
|
+
data = {:occurred => DateTime.now, :message => exception.message, :name => exception.class.name, :backtrace => exception.backtrace}
|
17
|
+
data[:cause] = extract_exception(exception.cause) if exception.cause
|
18
|
+
return data
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -5,8 +5,12 @@ module Wildsight
|
|
5
5
|
|
6
6
|
module Logs
|
7
7
|
|
8
|
-
def
|
9
|
-
|
8
|
+
def log_data
|
9
|
+
@data[:logs] = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def log_report(log)
|
13
|
+
log_data << log
|
10
14
|
end
|
11
15
|
|
12
16
|
end
|
@@ -28,7 +32,7 @@ module Wildsight
|
|
28
32
|
}
|
29
33
|
context = @context
|
30
34
|
context = Wildsight::Context.detect unless context
|
31
|
-
context.
|
35
|
+
context.log_report(payload)
|
32
36
|
return nil
|
33
37
|
end
|
34
38
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'pp'
|
2
|
-
|
3
1
|
module Wildsight
|
4
2
|
module Context
|
5
3
|
|
@@ -7,57 +5,55 @@ module Wildsight
|
|
7
5
|
|
8
6
|
RACK_ENV_KEY = 'wildsight.context'
|
9
7
|
|
10
|
-
|
11
|
-
|
8
|
+
REQUEST_INCLUDE_KEYS = ['SCRIPT_NAME', 'QUERY_STRING', 'PATH_INFO', 'REMOTE_ADDR']
|
9
|
+
REQUEST_EXCLUDE_KEYS = ['HTTP_COOKIE']
|
10
|
+
RESPONSE_EXCLUDE_KEYS = ['Set-Cookie']
|
12
11
|
|
13
12
|
def self.detect_context(env)
|
14
13
|
env[RACK_ENV_KEY] || Wildsight::Context.detect
|
15
14
|
end
|
16
15
|
|
17
|
-
def
|
18
|
-
@started = DateTime.now
|
16
|
+
def rack_instrument_request(env)
|
19
17
|
env[RACK_ENV_KEY] = self
|
18
|
+
end
|
19
|
+
|
20
|
+
def rack_data
|
21
|
+
@data[:rack] ||= {}
|
22
|
+
end
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
self.request[:metrics] ||= {}
|
24
|
+
def rack_report(env, response = nil)
|
25
|
+
env.delete(RACK_ENV_KEY)
|
24
26
|
|
25
|
-
|
27
|
+
rack_data[:request_target] ||= env['SCRIPT_NAME'].to_s + env['PATH_INFO'].to_s
|
26
28
|
|
27
29
|
env.each_pair do |key,value|
|
28
30
|
name = key.to_s
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
31
|
+
rack_data[:request_headers] ||= {}
|
32
|
+
rack_data[:request_headers][key] = value if REQUEST_INCLUDE_KEYS.include?(name)
|
33
|
+
rack_data[:request_headers][key] = value if name.start_with?('HTTP_')
|
34
|
+
rack_data[:request_headers][key] = value if name.start_with?('REQUEST_')
|
35
|
+
rack_data[:request_headers][key] = value if name.start_with?('SERVER_')
|
33
36
|
end
|
34
37
|
|
35
|
-
|
36
|
-
|
37
|
-
if !self.request[:session_id] && !env['rack.session'].nil? && env['rack.session'].respond_to?(:id)
|
38
|
-
self.request[:session_id] = env['rack.session'].id
|
38
|
+
if !rack_data[:session_id] && !env['rack.session'].nil? && env['rack.session'].respond_to?(:id)
|
39
|
+
rack_data[:session_id] ||= env['rack.session'].id
|
39
40
|
end
|
40
|
-
rescue => e
|
41
|
-
@agent.logger.log(:error, e)
|
42
|
-
end
|
43
41
|
|
44
|
-
|
45
|
-
@finished = DateTime.now
|
46
|
-
env.delete(RACK_ENV_KEY)
|
42
|
+
REQUEST_EXCLUDE_KEYS.each { |key| rack_data[:request_headers].delete(key) }
|
47
43
|
|
48
44
|
if response
|
49
|
-
|
50
|
-
|
45
|
+
rack_data[:response_code] ||= response[0]
|
46
|
+
rack_data[:response_headers] ||= response[1].dup
|
47
|
+
RESPONSE_EXCLUDE_KEYS.each { |key| rack_data[:response_headers].delete(key) }
|
51
48
|
end
|
52
49
|
|
53
|
-
self.request[:metrics][:request] = (@finished.to_f - @started.to_f) * 1000
|
54
|
-
|
55
50
|
exception = env['rack.exception'] || env['action_dispatch.exception'] || env['sinatra.error']
|
56
51
|
|
57
52
|
if exception
|
58
|
-
|
53
|
+
exception_report(exception)
|
59
54
|
end
|
60
|
-
|
55
|
+
|
56
|
+
self.submit
|
61
57
|
rescue => e
|
62
58
|
@agent.logger.log(:error, e)
|
63
59
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Wildsight
|
2
|
+
module Context
|
3
|
+
|
4
|
+
module Rails
|
5
|
+
|
6
|
+
def rails_data
|
7
|
+
@data[:rails] ||= {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def rails_extract(controller)
|
11
|
+
request = controller.request
|
12
|
+
|
13
|
+
rack_data[:request_target] = controller.class.name + '#' + request.params['action']
|
14
|
+
|
15
|
+
rack_data[:method] = request.method
|
16
|
+
rack_data[:path] = request.original_fullpath
|
17
|
+
rack_data[:params] = request.filtered_parameters
|
18
|
+
|
19
|
+
rack_data[:session_id] = request.session.id
|
20
|
+
|
21
|
+
rack_data[:url] = request.original_url
|
22
|
+
rack_data[:protocol] = request.protocol
|
23
|
+
rack_data[:host] = request.host_with_port
|
24
|
+
|
25
|
+
rack_data[:remote_ip] = request.remote_ip
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Wildsight
|
2
|
+
module Profiler
|
3
|
+
class Profiler
|
4
|
+
|
5
|
+
def initialize(context)
|
6
|
+
@context = context
|
7
|
+
@context.data[:profiler] ||= {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def duration(name, time = nil, options = {}, &block)
|
11
|
+
if block_given?
|
12
|
+
start = DateTime.now.to_f
|
13
|
+
result = block.call
|
14
|
+
stop = DateTime.now.to_f
|
15
|
+
item = { before: start, after: stop }
|
16
|
+
else
|
17
|
+
result = nil
|
18
|
+
item = { before: time[0], after: time[1] }
|
19
|
+
end
|
20
|
+
item[:duration] = (item[:after] - item[:before]) * 1000
|
21
|
+
durations[name] ||= { intervals: [], duration: 0.0 }
|
22
|
+
durations[name][:intervals] << item
|
23
|
+
durations[name][:duration] += item[:duration]
|
24
|
+
return result
|
25
|
+
end
|
26
|
+
|
27
|
+
def durations
|
28
|
+
@context.data[:profiler][:durations] ||= {}
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -10,13 +10,13 @@ module Wildsight
|
|
10
10
|
def call(env)
|
11
11
|
@context = Wildsight::Agent.default.context
|
12
12
|
@context.bind_thread
|
13
|
-
@context.
|
13
|
+
@context.rack_instrument_request(env)
|
14
14
|
response = @app.call(env)
|
15
15
|
rescue Exception => exception
|
16
16
|
env['rack.exception'] = exception
|
17
17
|
raise exception
|
18
18
|
ensure
|
19
|
-
@context.
|
19
|
+
@context.rack_report(env, response)
|
20
20
|
@context.release_thread
|
21
21
|
@context.unregister
|
22
22
|
end
|
@@ -2,50 +2,95 @@ module Wildsight
|
|
2
2
|
module Rails
|
3
3
|
class Railtie < ::Rails::Railtie
|
4
4
|
|
5
|
-
initializer('wildsight.middleware') do |app|
|
6
|
-
app.config.middleware.insert_before('ActionDispatch::Executor', Wildsight::Rack::Middleware)
|
7
|
-
app.config.middleware.insert_after('ActionDispatch::DebugExceptions', Wildsight::Rack::MiddlewareException)
|
8
|
-
end
|
9
|
-
|
10
5
|
initializer('wildsight.rails.logger') do |app|
|
11
6
|
::Rails.logger.extend(ActiveSupport::Logger.broadcast(Wildsight::Context::Logger.new))
|
12
7
|
end
|
13
8
|
|
14
9
|
initializer('wildsight.action_controller.extensions') do |app|
|
15
10
|
ActiveSupport.on_load(:action_controller) do
|
16
|
-
include Wildsight::Rails::ActionController
|
17
|
-
end
|
18
|
-
end
|
19
11
|
|
20
|
-
|
21
|
-
ActiveSupport::Notifications.subscribe('process_action.action_controller') do |*args|
|
22
|
-
request = args[4][:request]
|
12
|
+
::Rails::Engine.class_eval do
|
23
13
|
|
24
|
-
|
14
|
+
alias_method :call_without_ws, :call
|
25
15
|
|
26
|
-
|
16
|
+
def call(env)
|
17
|
+
context = Wildsight::Agent.default.context
|
18
|
+
context.bind_thread
|
19
|
+
context.rack_instrument_request(env)
|
27
20
|
|
28
|
-
|
29
|
-
|
21
|
+
response = context.profiler.duration(:middleware) { call_without_ws(env) }
|
22
|
+
|
23
|
+
return response
|
24
|
+
ensure
|
25
|
+
context.rack_report(env, response)
|
26
|
+
context.release_thread
|
27
|
+
context.unregister
|
28
|
+
end
|
30
29
|
|
31
|
-
if context.request[:metrics][:database] == nil || context.request[:metrics][:database] == 0
|
32
|
-
context.request[:metrics][:database] = args[4][:db_runtime] || 0
|
33
30
|
end
|
34
31
|
|
35
|
-
|
36
|
-
context.request[:path] = args[4][:path]
|
37
|
-
context.request[:params] = args[4][:params]
|
32
|
+
::ActionDispatch::Routing::RouteSet.class_eval do
|
38
33
|
|
39
|
-
|
34
|
+
alias_method :call_without_ws, :call
|
40
35
|
|
41
|
-
|
42
|
-
|
36
|
+
def call(env)
|
37
|
+
context = Wildsight::Context::Rack.detect_context(env)
|
38
|
+
result = context.profiler.duration(:routing) { call_without_ws(env) }
|
39
|
+
return result
|
40
|
+
end
|
41
|
+
end
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
::AbstractController::Base.class_eval do
|
44
|
+
|
45
|
+
alias_method :process_without_ws, :process
|
46
|
+
|
47
|
+
def process(*args)
|
48
|
+
context = Wildsight::Context::Rack.detect_context(request.env)
|
49
|
+
result = context.profiler.duration(:rails) { process_without_ws(*args) }
|
50
|
+
return result
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
self.class_eval do
|
56
|
+
|
57
|
+
alias_method :process_action_without_ws, :process_action
|
58
|
+
|
59
|
+
def wildsight_context
|
60
|
+
@_wildsight_context ||= Wildsight::Context::Rack.detect_context(request.env)
|
61
|
+
end
|
62
|
+
|
63
|
+
def process_action(*args)
|
64
|
+
context = Wildsight::Context::Rack.detect_context(request.env)
|
65
|
+
context.rails_extract(self)
|
66
|
+
result = context.profiler.duration(:action) { process_action_without_ws(*args) }
|
67
|
+
return result
|
68
|
+
rescue Exception => e
|
69
|
+
request.env['rack.exception'] = e
|
70
|
+
raise e
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
include Wildsight::Rails::ActionController
|
75
|
+
end
|
76
|
+
|
77
|
+
::AbstractController::Rendering.class_eval do
|
78
|
+
|
79
|
+
alias_method :render_without_ws, :render
|
80
|
+
|
81
|
+
def render(*args, &block)
|
82
|
+
context = Wildsight::Context::Rack.detect_context(request.env)
|
83
|
+
result = context.profiler.duration(:render) { render_without_ws(*args, &block) }
|
84
|
+
return result
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
initializer('wildsight.action_controller.metrics') do |app|
|
92
|
+
ActiveSupport::Notifications.subscribe('process_action.action_controller') do |*args|
|
47
93
|
|
48
|
-
context.request[:remote_ip] = request.remote_ip
|
49
94
|
end
|
50
95
|
end
|
51
96
|
|
@@ -57,20 +102,21 @@ module Wildsight
|
|
57
102
|
|
58
103
|
initializer('wildsight.active_record.metrics') do |app|
|
59
104
|
ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
|
60
|
-
event = {
|
61
|
-
:name => args[4][:name],
|
62
|
-
:statement => args[4][:statement_name],
|
63
|
-
:binds => args[4][:binds],
|
64
|
-
:query => args[4][:sql],
|
65
|
-
:connection => args[4][:connection_id],
|
66
|
-
:occurred => args[1],
|
67
|
-
:duration => (args[2] - args[1]) * 1000
|
68
|
-
}
|
69
105
|
context = Wildsight::Context.detect
|
70
|
-
context
|
71
|
-
|
72
|
-
|
73
|
-
|
106
|
+
if context
|
107
|
+
context.profiler.duration(:database, [args[1].to_f, args[2].to_f])
|
108
|
+
|
109
|
+
event = {
|
110
|
+
:name => args[4][:name],
|
111
|
+
:statement => args[4][:statement_name],
|
112
|
+
:binds => args[4][:binds],
|
113
|
+
:query => args[4][:sql],
|
114
|
+
:connection => args[4][:connection_id],
|
115
|
+
:occurred => args[1],
|
116
|
+
:duration => (args[2] - args[1]) * 1000
|
117
|
+
}
|
118
|
+
context.active_record_report(event)
|
119
|
+
end
|
74
120
|
end
|
75
121
|
|
76
122
|
end
|
@@ -15,10 +15,8 @@ module Wildsight
|
|
15
15
|
|
16
16
|
def send(payload)
|
17
17
|
begin
|
18
|
-
|
19
|
-
|
20
|
-
@agent.logger.log(:debug) { 'Uploaded' }
|
21
|
-
end
|
18
|
+
data = { payload: MultiJson.dump(payload), client: 'ruby' }
|
19
|
+
@agent.logger.log(:debug) { @connection.post(@uri, data).inspect }
|
22
20
|
rescue Exception => e
|
23
21
|
@agent.logger.log(:error) { e }
|
24
22
|
end
|
@@ -13,9 +13,8 @@ module Wildsight
|
|
13
13
|
|
14
14
|
def send(payload)
|
15
15
|
begin
|
16
|
-
|
17
|
-
|
18
|
-
end
|
16
|
+
data = { payload: MultiJson.dump(payload), client: 'ruby' }
|
17
|
+
@agent.logger.log(:debug) { Net::HTTP.post_form(@uri, data).inspect }
|
19
18
|
rescue Exception => e
|
20
19
|
@agent.logger.log(:error) { e }
|
21
20
|
end
|
data/lib/wildsight/version.rb
CHANGED
data/lib/wildsight_custom.rb
CHANGED
@@ -2,12 +2,12 @@ require 'wildsight/version'
|
|
2
2
|
|
3
3
|
require 'wildsight/transport/transport'
|
4
4
|
require 'wildsight/metrics/metrics'
|
5
|
+
require 'wildsight/profiler/profiler'
|
5
6
|
require 'wildsight/context/context'
|
6
7
|
require 'wildsight/agent/agent'
|
7
8
|
|
8
9
|
if defined?(Rack)
|
9
10
|
require 'wildsight/rack/middleware_context'
|
10
|
-
require 'wildsight/rack/middleware_exception'
|
11
11
|
require 'wildsight/rack/middleware'
|
12
12
|
end
|
13
13
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wildsight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marek Jelen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-06-
|
12
|
+
date: 2016-06-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -103,17 +103,19 @@ files:
|
|
103
103
|
- lib/wildsight/agent/config.yml
|
104
104
|
- lib/wildsight/agent/logger.rb
|
105
105
|
- lib/wildsight/agent/tools.rb
|
106
|
+
- lib/wildsight/context/active_record.rb
|
106
107
|
- lib/wildsight/context/context.rb
|
108
|
+
- lib/wildsight/context/exception.rb
|
107
109
|
- lib/wildsight/context/logger.rb
|
108
110
|
- lib/wildsight/context/rack.rb
|
109
|
-
- lib/wildsight/context/
|
111
|
+
- lib/wildsight/context/rails.rb
|
110
112
|
- lib/wildsight/metrics/counter.rb
|
111
113
|
- lib/wildsight/metrics/gauge.rb
|
112
114
|
- lib/wildsight/metrics/metrics.rb
|
113
115
|
- lib/wildsight/metrics/statistics.rb
|
116
|
+
- lib/wildsight/profiler/profiler.rb
|
114
117
|
- lib/wildsight/rack/middleware.rb
|
115
118
|
- lib/wildsight/rack/middleware_context.rb
|
116
|
-
- lib/wildsight/rack/middleware_exception.rb
|
117
119
|
- lib/wildsight/rails/action_controller.rb
|
118
120
|
- lib/wildsight/rails/active_record.rb
|
119
121
|
- lib/wildsight/rails/railtie.rb
|
@@ -143,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
145
|
version: '0'
|
144
146
|
requirements: []
|
145
147
|
rubyforge_project:
|
146
|
-
rubygems_version: 2.
|
148
|
+
rubygems_version: 2.5.1
|
147
149
|
signing_key:
|
148
150
|
specification_version: 4
|
149
151
|
summary: Multi language/framework/platform error and statistics monitor
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Wildsight
|
2
|
-
module Rack
|
3
|
-
|
4
|
-
class MiddlewareException
|
5
|
-
|
6
|
-
def initialize(app)
|
7
|
-
@app = app
|
8
|
-
end
|
9
|
-
|
10
|
-
def call(env)
|
11
|
-
@app.call(env)
|
12
|
-
rescue Exception => e
|
13
|
-
env['rack.exception'] ||= e
|
14
|
-
raise e
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|