skylight 1.7.2 → 2.0.0.beta1

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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -33
  3. data/ext/extconf.rb +32 -6
  4. data/ext/libskylight.yml +6 -9
  5. data/ext/skylight_native.c +49 -18
  6. data/lib/skylight.rb +35 -1
  7. data/lib/skylight/api.rb +4 -2
  8. data/lib/skylight/cli.rb +1 -1
  9. data/lib/skylight/cli/doctor.rb +6 -4
  10. data/lib/skylight/config.rb +149 -518
  11. data/lib/skylight/data/cacert.pem +236 -812
  12. data/lib/skylight/helpers.rb +5 -1
  13. data/lib/skylight/instrumenter.rb +10 -241
  14. data/lib/skylight/middleware.rb +1 -89
  15. data/lib/skylight/native.rb +8 -6
  16. data/lib/skylight/native_ext_fetcher.rb +251 -0
  17. data/lib/skylight/normalizers/active_job/enqueue_at.rb +2 -20
  18. data/lib/skylight/probes/sinatra_add_middleware.rb +22 -0
  19. data/lib/skylight/railtie.rb +11 -131
  20. data/lib/skylight/sinatra.rb +1 -5
  21. data/lib/skylight/trace.rb +1 -229
  22. data/lib/skylight/util/http.rb +3 -3
  23. data/lib/skylight/vendor/cli/thor/actions/directory.rb +5 -15
  24. data/lib/skylight/version.rb +1 -1
  25. metadata +114 -91
  26. data/lib/skylight/compat.rb +0 -76
  27. data/lib/skylight/core.rb +0 -149
  28. data/lib/skylight/deprecation.rb +0 -55
  29. data/lib/skylight/formatters/http.rb +0 -20
  30. data/lib/skylight/gc.rb +0 -107
  31. data/lib/skylight/normalizers.rb +0 -192
  32. data/lib/skylight/normalizers/action_controller/process_action.rb +0 -50
  33. data/lib/skylight/normalizers/action_controller/send_file.rb +0 -50
  34. data/lib/skylight/normalizers/action_view/render_collection.rb +0 -22
  35. data/lib/skylight/normalizers/action_view/render_partial.rb +0 -21
  36. data/lib/skylight/normalizers/action_view/render_template.rb +0 -21
  37. data/lib/skylight/normalizers/active_model_serializers/render.rb +0 -26
  38. data/lib/skylight/normalizers/active_record/instantiation.rb +0 -17
  39. data/lib/skylight/normalizers/active_record/sql.rb +0 -55
  40. data/lib/skylight/normalizers/active_support/cache.rb +0 -51
  41. data/lib/skylight/normalizers/active_support/cache_clear.rb +0 -16
  42. data/lib/skylight/normalizers/active_support/cache_decrement.rb +0 -16
  43. data/lib/skylight/normalizers/active_support/cache_delete.rb +0 -16
  44. data/lib/skylight/normalizers/active_support/cache_exist.rb +0 -16
  45. data/lib/skylight/normalizers/active_support/cache_fetch_hit.rb +0 -16
  46. data/lib/skylight/normalizers/active_support/cache_generate.rb +0 -16
  47. data/lib/skylight/normalizers/active_support/cache_increment.rb +0 -16
  48. data/lib/skylight/normalizers/active_support/cache_read.rb +0 -16
  49. data/lib/skylight/normalizers/active_support/cache_read_multi.rb +0 -16
  50. data/lib/skylight/normalizers/active_support/cache_write.rb +0 -16
  51. data/lib/skylight/normalizers/coach/handler_finish.rb +0 -36
  52. data/lib/skylight/normalizers/coach/middleware_finish.rb +0 -23
  53. data/lib/skylight/normalizers/couch_potato/query.rb +0 -20
  54. data/lib/skylight/normalizers/default.rb +0 -27
  55. data/lib/skylight/normalizers/elasticsearch/request.rb +0 -20
  56. data/lib/skylight/normalizers/faraday/request.rb +0 -38
  57. data/lib/skylight/normalizers/grape/endpoint.rb +0 -30
  58. data/lib/skylight/normalizers/grape/endpoint_render.rb +0 -26
  59. data/lib/skylight/normalizers/grape/endpoint_run.rb +0 -33
  60. data/lib/skylight/normalizers/grape/endpoint_run_filters.rb +0 -23
  61. data/lib/skylight/normalizers/moped/query.rb +0 -100
  62. data/lib/skylight/probes.rb +0 -129
  63. data/lib/skylight/probes/action_controller.rb +0 -64
  64. data/lib/skylight/probes/action_dispatch.rb +0 -30
  65. data/lib/skylight/probes/action_view.rb +0 -43
  66. data/lib/skylight/probes/active_model_serializers.rb +0 -55
  67. data/lib/skylight/probes/elasticsearch.rb +0 -37
  68. data/lib/skylight/probes/excon.rb +0 -26
  69. data/lib/skylight/probes/excon/middleware.rb +0 -68
  70. data/lib/skylight/probes/faraday.rb +0 -22
  71. data/lib/skylight/probes/grape.rb +0 -88
  72. data/lib/skylight/probes/httpclient.rb +0 -46
  73. data/lib/skylight/probes/middleware.rb +0 -68
  74. data/lib/skylight/probes/mongo.rb +0 -161
  75. data/lib/skylight/probes/mongoid.rb +0 -21
  76. data/lib/skylight/probes/moped.rb +0 -39
  77. data/lib/skylight/probes/net_http.rb +0 -58
  78. data/lib/skylight/probes/redis.rb +0 -71
  79. data/lib/skylight/probes/sequel.rb +0 -37
  80. data/lib/skylight/probes/sinatra.rb +0 -76
  81. data/lib/skylight/probes/tilt.rb +0 -31
  82. data/lib/skylight/subscriber.rb +0 -122
  83. data/lib/skylight/user_config.rb +0 -60
  84. data/lib/skylight/util.rb +0 -17
  85. data/lib/skylight/util/allocation_free.rb +0 -26
  86. data/lib/skylight/util/clock.rb +0 -54
  87. data/lib/skylight/util/deploy.rb +0 -132
  88. data/lib/skylight/util/gzip.rb +0 -21
  89. data/lib/skylight/util/inflector.rb +0 -112
  90. data/lib/skylight/util/logging.rb +0 -127
  91. data/lib/skylight/util/multi_io.rb +0 -21
  92. data/lib/skylight/util/native_ext_fetcher.rb +0 -253
  93. data/lib/skylight/util/platform.rb +0 -75
  94. data/lib/skylight/util/proxy.rb +0 -13
  95. data/lib/skylight/vendor/active_support/notifications.rb +0 -207
  96. data/lib/skylight/vendor/active_support/notifications/fanout.rb +0 -159
  97. data/lib/skylight/vendor/active_support/notifications/instrumenter.rb +0 -72
  98. data/lib/skylight/vendor/active_support/per_thread_registry.rb +0 -52
  99. data/lib/skylight/vendor/thread_safe.rb +0 -126
  100. data/lib/skylight/vendor/thread_safe/non_concurrent_cache_backend.rb +0 -133
  101. data/lib/skylight/vendor/thread_safe/synchronized_cache_backend.rb +0 -76
  102. data/lib/skylight/vm/gc.rb +0 -70
@@ -3,7 +3,7 @@ require 'json'
3
3
  require 'openssl'
4
4
  require 'net/http'
5
5
  require 'net/https'
6
- require 'skylight/util/gzip'
6
+ require 'skylight/core/util/gzip'
7
7
  require 'skylight/util/ssl'
8
8
 
9
9
  module Skylight
@@ -19,7 +19,7 @@ module Skylight
19
19
  DEFLATE = 'deflate'.freeze
20
20
  GZIP = 'gzip'.freeze
21
21
 
22
- include Logging
22
+ include Core::Util::Logging
23
23
 
24
24
  attr_accessor :authentication
25
25
  attr_reader :host, :port
@@ -45,7 +45,7 @@ module Skylight
45
45
  @config = config
46
46
 
47
47
  unless url = config["#{service}_url"]
48
- raise ArgumentError, "no URL specified"
48
+ raise ArgumentError, "no URL specified for #{service}"
49
49
  end
50
50
 
51
51
  url = URI.parse(url)
@@ -96,22 +96,12 @@ class Thor
96
96
  end
97
97
  end
98
98
 
99
- if RUBY_VERSION < '2.0'
100
- def file_level_lookup(previous_lookup)
101
- File.join(previous_lookup, '{*,.[a-z]*}')
102
- end
103
-
104
- def files(lookup)
105
- Dir[lookup]
106
- end
107
- else
108
- def file_level_lookup(previous_lookup)
109
- File.join(previous_lookup, '*')
110
- end
99
+ def file_level_lookup(previous_lookup)
100
+ File.join(previous_lookup, '*')
101
+ end
111
102
 
112
- def files(lookup)
113
- Dir.glob(lookup, File::FNM_DOTMATCH)
114
- end
103
+ def files(lookup)
104
+ Dir.glob(lookup, File::FNM_DOTMATCH)
115
105
  end
116
106
 
117
107
  end
@@ -1,4 +1,4 @@
1
1
  module Skylight
2
- VERSION = '1.7.2'
2
+ VERSION = '2.0.0-beta1'
3
3
  end
4
4
 
metadata CHANGED
@@ -1,43 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skylight
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 2.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tilde, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-14 00:00:00.000000000 Z
11
+ date: 2018-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: skylight-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: 2.0.0.beta1
20
20
  type: :runtime
21
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.0.beta1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.15'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.15'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-collection_matchers
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: beefcake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "<"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.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.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
22
106
  version_requirements: !ruby/object:Gem::Requirement
23
107
  requirements:
24
108
  - - ">="
25
109
  - !ruby/object:Gem::Version
26
- version: 3.0.0
110
+ version: '0'
27
111
  - !ruby/object:Gem::Dependency
28
- name: rake-compiler
112
+ name: rack-test
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: timecop
29
127
  requirement: !ruby/object:Gem::Requirement
30
128
  requirements:
31
129
  - - "~>"
32
130
  - !ruby/object:Gem::Version
33
- version: 1.0.4
131
+ version: '0.9'
34
132
  type: :development
35
133
  prerelease: false
36
134
  version_requirements: !ruby/object:Gem::Requirement
37
135
  requirements:
38
136
  - - "~>"
39
137
  - !ruby/object:Gem::Version
40
- version: 1.0.4
138
+ version: '0.9'
41
139
  description:
42
140
  email:
43
141
  - engineering@tilde.io
@@ -63,92 +161,21 @@ files:
63
161
  - lib/skylight/cli.rb
64
162
  - lib/skylight/cli/doctor.rb
65
163
  - lib/skylight/cli/helpers.rb
66
- - lib/skylight/compat.rb
67
164
  - lib/skylight/config.rb
68
- - lib/skylight/core.rb
69
165
  - lib/skylight/data/cacert.pem
70
- - lib/skylight/deprecation.rb
71
- - lib/skylight/formatters/http.rb
72
- - lib/skylight/gc.rb
73
166
  - lib/skylight/helpers.rb
74
167
  - lib/skylight/instrumenter.rb
75
168
  - lib/skylight/middleware.rb
76
169
  - lib/skylight/native.rb
77
- - lib/skylight/normalizers.rb
78
- - lib/skylight/normalizers/action_controller/process_action.rb
79
- - lib/skylight/normalizers/action_controller/send_file.rb
80
- - lib/skylight/normalizers/action_view/render_collection.rb
81
- - lib/skylight/normalizers/action_view/render_partial.rb
82
- - lib/skylight/normalizers/action_view/render_template.rb
170
+ - lib/skylight/native_ext_fetcher.rb
83
171
  - lib/skylight/normalizers/active_job/enqueue_at.rb
84
- - lib/skylight/normalizers/active_model_serializers/render.rb
85
- - lib/skylight/normalizers/active_record/instantiation.rb
86
- - lib/skylight/normalizers/active_record/sql.rb
87
- - lib/skylight/normalizers/active_support/cache.rb
88
- - lib/skylight/normalizers/active_support/cache_clear.rb
89
- - lib/skylight/normalizers/active_support/cache_decrement.rb
90
- - lib/skylight/normalizers/active_support/cache_delete.rb
91
- - lib/skylight/normalizers/active_support/cache_exist.rb
92
- - lib/skylight/normalizers/active_support/cache_fetch_hit.rb
93
- - lib/skylight/normalizers/active_support/cache_generate.rb
94
- - lib/skylight/normalizers/active_support/cache_increment.rb
95
- - lib/skylight/normalizers/active_support/cache_read.rb
96
- - lib/skylight/normalizers/active_support/cache_read_multi.rb
97
- - lib/skylight/normalizers/active_support/cache_write.rb
98
- - lib/skylight/normalizers/coach/handler_finish.rb
99
- - lib/skylight/normalizers/coach/middleware_finish.rb
100
- - lib/skylight/normalizers/couch_potato/query.rb
101
- - lib/skylight/normalizers/default.rb
102
- - lib/skylight/normalizers/elasticsearch/request.rb
103
- - lib/skylight/normalizers/faraday/request.rb
104
- - lib/skylight/normalizers/grape/endpoint.rb
105
- - lib/skylight/normalizers/grape/endpoint_render.rb
106
- - lib/skylight/normalizers/grape/endpoint_run.rb
107
- - lib/skylight/normalizers/grape/endpoint_run_filters.rb
108
- - lib/skylight/normalizers/moped/query.rb
109
- - lib/skylight/probes.rb
110
- - lib/skylight/probes/action_controller.rb
111
- - lib/skylight/probes/action_dispatch.rb
112
- - lib/skylight/probes/action_view.rb
113
- - lib/skylight/probes/active_model_serializers.rb
114
- - lib/skylight/probes/elasticsearch.rb
115
- - lib/skylight/probes/excon.rb
116
- - lib/skylight/probes/excon/middleware.rb
117
- - lib/skylight/probes/faraday.rb
118
- - lib/skylight/probes/grape.rb
119
- - lib/skylight/probes/httpclient.rb
120
- - lib/skylight/probes/middleware.rb
121
- - lib/skylight/probes/mongo.rb
122
- - lib/skylight/probes/mongoid.rb
123
- - lib/skylight/probes/moped.rb
124
- - lib/skylight/probes/net_http.rb
125
- - lib/skylight/probes/redis.rb
126
- - lib/skylight/probes/sequel.rb
127
- - lib/skylight/probes/sinatra.rb
128
- - lib/skylight/probes/tilt.rb
172
+ - lib/skylight/probes/sinatra_add_middleware.rb
129
173
  - lib/skylight/railtie.rb
130
174
  - lib/skylight/sinatra.rb
131
- - lib/skylight/subscriber.rb
132
175
  - lib/skylight/trace.rb
133
- - lib/skylight/user_config.rb
134
- - lib/skylight/util.rb
135
- - lib/skylight/util/allocation_free.rb
136
- - lib/skylight/util/clock.rb
137
- - lib/skylight/util/deploy.rb
138
- - lib/skylight/util/gzip.rb
139
176
  - lib/skylight/util/hostname.rb
140
177
  - lib/skylight/util/http.rb
141
- - lib/skylight/util/inflector.rb
142
- - lib/skylight/util/logging.rb
143
- - lib/skylight/util/multi_io.rb
144
- - lib/skylight/util/native_ext_fetcher.rb
145
- - lib/skylight/util/platform.rb
146
- - lib/skylight/util/proxy.rb
147
178
  - lib/skylight/util/ssl.rb
148
- - lib/skylight/vendor/active_support/notifications.rb
149
- - lib/skylight/vendor/active_support/notifications/fanout.rb
150
- - lib/skylight/vendor/active_support/notifications/instrumenter.rb
151
- - lib/skylight/vendor/active_support/per_thread_registry.rb
152
179
  - lib/skylight/vendor/cli/highline.rb
153
180
  - lib/skylight/vendor/cli/highline/color_scheme.rb
154
181
  - lib/skylight/vendor/cli/highline/compatibility.rb
@@ -188,11 +215,7 @@ files:
188
215
  - lib/skylight/vendor/cli/thor/shell/html.rb
189
216
  - lib/skylight/vendor/cli/thor/util.rb
190
217
  - lib/skylight/vendor/cli/thor/version.rb
191
- - lib/skylight/vendor/thread_safe.rb
192
- - lib/skylight/vendor/thread_safe/non_concurrent_cache_backend.rb
193
- - lib/skylight/vendor/thread_safe/synchronized_cache_backend.rb
194
218
  - lib/skylight/version.rb
195
- - lib/skylight/vm/gc.rb
196
219
  homepage: http://www.skylight.io
197
220
  licenses:
198
221
  - Nonstandard
@@ -205,16 +228,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
228
  requirements:
206
229
  - - ">="
207
230
  - !ruby/object:Gem::Version
208
- version: 1.9.3
231
+ version: 2.2.7
209
232
  required_rubygems_version: !ruby/object:Gem::Requirement
210
233
  requirements:
211
- - - ">="
234
+ - - ">"
212
235
  - !ruby/object:Gem::Version
213
- version: '0'
236
+ version: 1.3.1
214
237
  requirements: []
215
238
  rubyforge_project:
216
- rubygems_version: 2.7.6
239
+ rubygems_version: 2.7.3
217
240
  signing_key:
218
241
  specification_version: 4
219
- summary: Skylight is a smart profiler for Rails apps
242
+ summary: Skylight is a smart profiler for Rails, Sinatra, and other Ruby apps.
220
243
  test_files: []
@@ -1,76 +0,0 @@
1
- module Skylight
2
- # Ensure the version of AS:N being used is recent enough
3
- begin
4
- # Attempt to reference an internal class only present in the new AS::Notifications
5
- ActiveSupport::Notifications::Fanout::Subscribers
6
- rescue NameError
7
-
8
- # The things we do...
9
- class ::ActiveSupport::Notifications::Fanout
10
- attr_reader :subscribers
11
-
12
- class Subscriber
13
- attr_reader :pattern, :delegate
14
- end
15
- end
16
-
17
- notifier = ActiveSupport::Notifications.notifier
18
-
19
- # If the class is missing, require our vendored AS::N
20
- require 'skylight/vendor/active_support/notifications'
21
-
22
- if notifier.subscribers.respond_to?(:each)
23
- notifier.subscribers.each do |sub|
24
- pattern = sub.respond_to?(:pattern) && sub.pattern
25
- delegate = sub.respond_to?(:delegate) && sub.delegate
26
-
27
- if pattern && delegate
28
- ActiveSupport::Notifications.subscribe(pattern, delegate)
29
- end
30
- end
31
- end
32
- end
33
- end
34
-
35
- if defined?(ActiveSupport::Notifications::Fanout::Subscribers::Evented)
36
- # Handle early RCs of rails 4.0
37
- # @api private
38
- class ActiveSupport::Notifications::Fanout::Subscribers::Evented
39
- unless method_defined?(:publish)
40
- def publish(name, *args)
41
- if @delegate.respond_to?(:publish)
42
- @delegate.publish name, *args
43
- end
44
- end
45
- end
46
- end
47
- end
48
-
49
- require 'rack'
50
- require 'rack/etag'
51
- if Rack.release.to_f < 1.6
52
- # Backport `close` compliance:
53
- # https://github.com/rack/rack/commit/4d9e1b228dacbcf1552c68e2ab2f21274fdcecb4
54
- Rack::ETag.class_eval do
55
- def call(env)
56
- status, headers, body = @app.call(env)
57
-
58
- if etag_status?(status) && etag_body?(body) && !skip_caching?(headers)
59
- original_body = body
60
- digest, body = digest_body(body)
61
- original_body.close if original_body.respond_to?(:close)
62
- headers['ETag'] = %("#{digest}") if digest
63
- end
64
-
65
- unless headers['Cache-Control']
66
- if digest
67
- headers['Cache-Control'] = @cache_control if @cache_control
68
- else
69
- headers['Cache-Control'] = @no_cache_control if @no_cache_control
70
- end
71
- end
72
-
73
- [status, headers, body]
74
- end
75
- end
76
- end
@@ -1,149 +0,0 @@
1
- require 'skylight/version'
2
- require 'skylight/deprecation'
3
-
4
- # Root Skylight namespace
5
- module Skylight
6
-
7
- # @api private
8
- TRACE_ENV_KEY = 'SKYLIGHT_ENABLE_TRACE_LOGS'.freeze
9
-
10
- # Load the native agent
11
- require 'skylight/native'
12
-
13
- # Specifically check for Railtie since we've had at least one case of a
14
- # customer having Rails defined without having all of Rails loaded.
15
- if defined?(Rails::Railtie)
16
- if Gem::Version.new(Rails.version) < Gem::Version.new('4.2.0')
17
- DEPRECATOR.deprecation_warning("Support for Rails versions before 4.2")
18
- end
19
-
20
- require 'skylight/railtie'
21
- end
22
-
23
- require 'active_support/notifications'
24
- require 'skylight/compat' # Require after AS::N
25
-
26
- # Require VM specific things
27
- require 'skylight/config'
28
- require 'skylight/user_config'
29
- require 'skylight/gc'
30
- require 'skylight/helpers'
31
- require 'skylight/instrumenter'
32
- require 'skylight/middleware'
33
- require 'skylight/trace'
34
- require 'skylight/vm/gc'
35
- require 'skylight/util'
36
-
37
- # Used from the CLI
38
- autoload :Api, 'skylight/api'
39
- autoload :CLI, 'skylight/cli'
40
- autoload :Normalizers, 'skylight/normalizers'
41
- autoload :Subscriber, 'skylight/subscriber'
42
-
43
- # @api private
44
- class ConfigError < RuntimeError; end
45
-
46
- # @api private
47
- TIERS = %w(
48
- rack
49
- api
50
- app
51
- view
52
- db
53
- noise
54
- other)
55
-
56
- # @api private
57
- TIER_REGEX = /^(?:#{TIERS.join('|')})(?:\.|$)/u
58
-
59
- # @api private
60
- CATEGORY_REGEX = /^[a-z0-9_-]+(?:\.[a-z0-9_-]+)*$/iu
61
-
62
- # @api private
63
- DEFAULT_CATEGORY = "app.block".freeze
64
-
65
- # @api private
66
- DEFAULT_OPTIONS = { category: DEFAULT_CATEGORY }
67
-
68
- def self.probe(*args)
69
- Probes.probe(*args)
70
- end
71
-
72
- def self.enable_normalizer(*names)
73
- Normalizers.enable(*names)
74
- end
75
-
76
- # Start instrumenting
77
- def self.start!(*args)
78
- Instrumenter.start!(*args)
79
- end
80
-
81
- # Stop instrumenting
82
- def self.stop!(*args)
83
- Instrumenter.stop!(*args)
84
- end
85
-
86
- # Check tracing
87
- def self.tracing?
88
- inst = Instrumenter.instance
89
- inst && inst.current_trace
90
- end
91
-
92
- # Start a trace
93
- def self.trace(endpoint=nil, cat=nil, title=nil)
94
- unless inst = Instrumenter.instance
95
- return yield if block_given?
96
- return
97
- end
98
-
99
- if block_given?
100
- inst.trace(endpoint, cat || DEFAULT_CATEGORY, title) { yield }
101
- else
102
- inst.trace(endpoint, cat || DEFAULT_CATEGORY, title)
103
- end
104
- end
105
-
106
- # Instrument
107
- def self.instrument(opts = DEFAULT_OPTIONS, &block)
108
- unless inst = Instrumenter.instance
109
- return yield if block_given?
110
- return
111
- end
112
-
113
- if Hash === opts
114
- category = opts[:category] || DEFAULT_CATEGORY
115
- title = opts[:title]
116
- desc = opts[:description]
117
- if opts.key?(:annotations)
118
- warn "call to #instrument included deprecated annotations"
119
- end
120
- else
121
- category = DEFAULT_CATEGORY
122
- title = opts.to_s
123
- desc = nil
124
- end
125
-
126
- inst.instrument(category, title, desc, &block)
127
- end
128
-
129
- # End a span
130
- def self.done(span)
131
- return unless inst = Instrumenter.instance
132
- inst.done(span)
133
- end
134
-
135
- def self.broken!
136
- return unless inst = Instrumenter.instance
137
- inst.broken!
138
- end
139
-
140
- # Temporarily disable
141
- def self.disable
142
- unless inst = Instrumenter.instance
143
- return yield if block_given?
144
- return
145
- end
146
-
147
- inst.disable { yield }
148
- end
149
- end