skylight 1.7.2 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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