skylight 1.0.0.beta3 → 1.0.0.beta4
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/CHANGELOG.md +6 -1
- data/LICENSE.md +4 -4
- data/lib/skylight/config.rb +6 -0
- data/lib/skylight/middleware.rb +7 -0
- data/lib/skylight/normalizers.rb +11 -0
- data/lib/skylight/normalizers/action_controller/process_action.rb +13 -1
- data/lib/skylight/normalizers/active_model_serializers/render.rb +3 -1
- data/lib/skylight/probes/action_controller.rb +48 -0
- data/lib/skylight/railtie.rb +2 -2
- data/lib/skylight/subscriber.rb +5 -0
- data/lib/skylight/user_config.rb +1 -1
- data/lib/skylight/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17f5108640b6ddd60f1e126dda1e69005a2aa130
|
4
|
+
data.tar.gz: ee06fc206e7a6b570db1e23c89b83c53362f4b5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adde4cc18fa3673ce4dd410e1446f6dad659884f88ad7a6095f0f1444a2ae28148d24679eda2ee2dd86c17f264ba90eeba2d9d51526436846f1dcd5a7d584d52
|
7
|
+
data.tar.gz: 3548e5730c12bce02eee29f46a4a415b80ebe8f811c0fe83d584836d565d8bb435bc72488d730cd90b8b2bbc4e1fb09c8077beefca3bca91caf058d889cb3513
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 1.0.0.beta4 (April 22, 2016)
|
2
|
+
|
3
|
+
* [FEATURE] Track formats separately in Rails endpoints. Turn on with `separate_formats: true`.
|
4
|
+
* [BUGFIX] Finish Rack::Responses in Middleware as some Rack apps don't do this
|
5
|
+
|
1
6
|
## 1.0.0.beta3 (February 23, 2016)
|
2
7
|
|
3
8
|
* [BUGFIX] Update Rust Agent with SQL improvements, including handling for arrays and WITH
|
@@ -34,7 +39,7 @@
|
|
34
39
|
|
35
40
|
## 0.9.4 (November 23, 2015)
|
36
41
|
|
37
|
-
* [FEATURE] Added instrumentation for official Mongo Ruby Driver (utilized by Mongoid 5+). Add 'mongo' to probes list to enable.
|
42
|
+
* [FEATURE] Added instrumentation for official Mongo Ruby Driver (utilized by Mongoid 5+). Add 'mongo' to probes list to enable.
|
38
43
|
* [BUGFIX] SQL lexer now handles indentifiers beginning with underscores.
|
39
44
|
* [BUGFIX] Excon instrumentation now works correctly.
|
40
45
|
* [BUGFIX] Graceful handling of native agent failures on old OS X versions.
|
data/LICENSE.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
All other components of this product, except where otherwise noted, are
|
2
|
-
Copyright (c) 2013-
|
2
|
+
Copyright (c) 2013-2016 Tilde, Inc.
|
3
3
|
All rights reserved.
|
4
4
|
|
5
5
|
Certain inventions disclosed in this file may be claimed within patents
|
@@ -39,14 +39,14 @@ for lost profits or data.
|
|
39
39
|
Other Licenses
|
40
40
|
==============
|
41
41
|
|
42
|
-
|
42
|
+
Ruby on Rails
|
43
43
|
-------------
|
44
44
|
|
45
|
-
Copyright (c) 2005-
|
45
|
+
Copyright (c) 2005-2016 David Heinemeier Hansson
|
46
46
|
|
47
47
|
Released under the MIT License.
|
48
48
|
|
49
|
-
Original source at https://github.com/rails/rails
|
49
|
+
Original source at https://github.com/rails/rails.
|
50
50
|
|
51
51
|
|
52
52
|
HighLine
|
data/lib/skylight/config.rb
CHANGED
@@ -42,6 +42,7 @@ module Skylight
|
|
42
42
|
"IGNORED_ENDPOINT" => :'ignored_endpoint',
|
43
43
|
"IGNORED_ENDPOINTS" => :'ignored_endpoints',
|
44
44
|
"SQL_MODE" => :'sql_mode',
|
45
|
+
"SEPARATE_FORMATS" => :'separate_formats',
|
45
46
|
|
46
47
|
# == Skylight Remote ==
|
47
48
|
"AUTH_URL" => :'auth_url',
|
@@ -95,6 +96,7 @@ module Skylight
|
|
95
96
|
:'log_level' => 'INFO'.freeze,
|
96
97
|
:'alert_log_file' => '-'.freeze,
|
97
98
|
:'log_sql_parse_errors' => false,
|
99
|
+
:'separate_formats' => false,
|
98
100
|
:'hostname' => Util::Hostname.default_hostname,
|
99
101
|
:'heroku.dyno_info_path' => '/etc/heroku/dyno'
|
100
102
|
}
|
@@ -525,6 +527,10 @@ authentication: #{self[:authentication]}
|
|
525
527
|
@deploy ||= Util::Deploy.build(self)
|
526
528
|
end
|
527
529
|
|
530
|
+
def separate_formats?
|
531
|
+
!!get(:separate_formats)
|
532
|
+
end
|
533
|
+
|
528
534
|
private
|
529
535
|
|
530
536
|
def check_nfs(path)
|
data/lib/skylight/middleware.rb
CHANGED
@@ -59,6 +59,13 @@ module Skylight
|
|
59
59
|
t { "middleware beginning trace" }
|
60
60
|
trace = Skylight.trace "Rack", 'app.rack.request'
|
61
61
|
resp = @app.call(env)
|
62
|
+
|
63
|
+
# Responses should be finished but in some situations they aren't
|
64
|
+
# e.g. https://github.com/ruby-grape/grape/issues/1041
|
65
|
+
if resp.respond_to?(:finish)
|
66
|
+
resp = resp.finish
|
67
|
+
end
|
68
|
+
|
62
69
|
resp[2] = BodyProxy.new(resp[2]) { trace.submit } if trace
|
63
70
|
resp
|
64
71
|
rescue Exception
|
data/lib/skylight/normalizers.rb
CHANGED
@@ -38,6 +38,13 @@ module Skylight
|
|
38
38
|
@config = config
|
39
39
|
setup if respond_to?(:setup)
|
40
40
|
end
|
41
|
+
|
42
|
+
def normalize(trace, name, payload)
|
43
|
+
:skip
|
44
|
+
end
|
45
|
+
|
46
|
+
def normalize_after(trace, span, name, payload)
|
47
|
+
end
|
41
48
|
end
|
42
49
|
|
43
50
|
class RenderNormalizer < Normalizer
|
@@ -121,6 +128,10 @@ module Skylight
|
|
121
128
|
normalizer_for(name).normalize(trace, name, payload)
|
122
129
|
end
|
123
130
|
|
131
|
+
def normalize_after(trace, span, name, payload)
|
132
|
+
normalizer_for(name).normalize_after(trace, span, name, payload)
|
133
|
+
end
|
134
|
+
|
124
135
|
def normalizer_for(name)
|
125
136
|
@normalizers[name] || DEFAULT
|
126
137
|
end
|
@@ -5,13 +5,25 @@ module Skylight
|
|
5
5
|
register "process_action.action_controller"
|
6
6
|
|
7
7
|
CAT = "app.controller.request".freeze
|
8
|
-
|
8
|
+
|
9
|
+
# Payload Keys: controller, action, params, format, method, path
|
10
|
+
# Additional keys available in `normalize_after`: status, view_runtime
|
11
|
+
# Along with ones added by probe: variant
|
9
12
|
|
10
13
|
def normalize(trace, name, payload)
|
11
14
|
trace.endpoint = controller_action(payload)
|
12
15
|
[ CAT, trace.endpoint, nil ]
|
13
16
|
end
|
14
17
|
|
18
|
+
def normalize_after(trace, span, name, payload)
|
19
|
+
return unless config.separate_formats?
|
20
|
+
|
21
|
+
format = [payload[:format], payload[:variant]].compact.flatten.join('+')
|
22
|
+
unless format.empty?
|
23
|
+
trace.endpoint += "<sk-format>#{format}</sk-format>"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
15
27
|
private
|
16
28
|
|
17
29
|
def controller_action(payload)
|
@@ -12,7 +12,9 @@ module Skylight
|
|
12
12
|
title = serializer_class.name.sub(/^ActiveModel::(Serializer::)?/, '')
|
13
13
|
|
14
14
|
if adapter_instance = payload[:adapter]
|
15
|
-
adapter_name = adapter_instance.class.name
|
15
|
+
adapter_name = adapter_instance.class.name
|
16
|
+
.sub(/^ActiveModel::Serializer::Adapter::/, '')
|
17
|
+
.sub(/^ActiveModelSerializers::Adapter::/, '')
|
16
18
|
desc = "Adapter: #{adapter_name}"
|
17
19
|
end
|
18
20
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Skylight
|
2
|
+
module Probes
|
3
|
+
module ActionController
|
4
|
+
class Probe
|
5
|
+
def install
|
6
|
+
::ActionController::Instrumentation.class_eval do
|
7
|
+
private
|
8
|
+
alias append_info_to_payload_without_sk append_info_to_payload
|
9
|
+
def append_info_to_payload(payload)
|
10
|
+
append_info_to_payload_without_sk(payload)
|
11
|
+
payload[:variant] = request.respond_to?(:variant) ? request.variant : nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
#if RAILS_VERSION < 4.2.1
|
16
|
+
# Backport https://github.com/rails/rails/pull/17978
|
17
|
+
::ActionController::Instrumentation.class_eval do
|
18
|
+
def process_action(*args)
|
19
|
+
raw_payload = {
|
20
|
+
:controller => self.class.name,
|
21
|
+
:action => self.action_name,
|
22
|
+
:params => request.filtered_parameters,
|
23
|
+
:format => request.format.try(:ref),
|
24
|
+
:method => request.request_method,
|
25
|
+
:path => (request.fullpath rescue "unknown")
|
26
|
+
}
|
27
|
+
|
28
|
+
ActiveSupport::Notifications.instrument("start_processing.action_controller", raw_payload.dup)
|
29
|
+
|
30
|
+
ActiveSupport::Notifications.instrument("process_action.action_controller", raw_payload) do |payload|
|
31
|
+
begin
|
32
|
+
result = super
|
33
|
+
payload[:status] = response.status
|
34
|
+
result
|
35
|
+
ensure
|
36
|
+
append_info_to_payload(payload)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
#end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
register("ActionController::Instrumentation", "action_controller/metal/instrumentation", ActionController::Probe.new)
|
47
|
+
end
|
48
|
+
end
|
data/lib/skylight/railtie.rb
CHANGED
@@ -13,9 +13,9 @@ module Skylight
|
|
13
13
|
config.skylight.config_path = "config/skylight.yml"
|
14
14
|
|
15
15
|
# The probes to load
|
16
|
-
# net_http, action_view, and grape are on by default
|
16
|
+
# net_http, action_controller, action_view, and grape are on by default
|
17
17
|
# Also available: excon, redis, sinatra, tilt, sequel
|
18
|
-
config.skylight.probes = ['net_http', 'action_view', 'grape']
|
18
|
+
config.skylight.probes = ['net_http', 'action_controller', 'action_view', 'grape']
|
19
19
|
|
20
20
|
initializer 'skylight.configure' do |app|
|
21
21
|
# Load probes even when agent is inactive to catch probe related bugs sooner
|
data/lib/skylight/subscriber.rb
CHANGED
@@ -86,6 +86,7 @@ module Skylight
|
|
86
86
|
|
87
87
|
while curr = trace.notifications.pop
|
88
88
|
if curr.name == name
|
89
|
+
normalize_after(trace, curr.span, name, payload)
|
89
90
|
trace.done(curr.span) if curr.span
|
90
91
|
return
|
91
92
|
end
|
@@ -110,5 +111,9 @@ module Skylight
|
|
110
111
|
@normalizers.normalize(*args)
|
111
112
|
end
|
112
113
|
|
114
|
+
def normalize_after(*args)
|
115
|
+
@normalizers.normalize_after(*args)
|
116
|
+
end
|
117
|
+
|
113
118
|
end
|
114
119
|
end
|
data/lib/skylight/user_config.rb
CHANGED
data/lib/skylight/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skylight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tilde, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- lib/skylight/normalizers/grape/endpoint_run_filters.rb
|
84
84
|
- lib/skylight/normalizers/moped/query.rb
|
85
85
|
- lib/skylight/probes.rb
|
86
|
+
- lib/skylight/probes/action_controller.rb
|
86
87
|
- lib/skylight/probes/action_view.rb
|
87
88
|
- lib/skylight/probes/active_model_serializers.rb
|
88
89
|
- lib/skylight/probes/excon.rb
|