skylight 2.0.0.beta2 → 2.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db165039da03ba238e5a23b22d7194644f4f41652e85c881db67258998a953eb
4
- data.tar.gz: 2552166e6e2982649d0ae01355cfd7648b7cecd4f905e33720adbac43b6cf70d
3
+ metadata.gz: 4b5dae77c81d35433c8d2da47b0a7a2b82f7730888802cf3ab892815ceba3f5a
4
+ data.tar.gz: f8c1649317979a382353b1410e1453e4af12fa025e2d03302860af1673990317
5
5
  SHA512:
6
- metadata.gz: c433d4c32a30060baa0741220a6f49c0ebec54dfc42b9af3a9541d97b3178167caf68db4e27bd58882bc91826b817866e34c60b83a85f28db251139ab318cd3d
7
- data.tar.gz: d6dc55b986b620bdca5b8a646f7f5e50c7e10f680931a08cd8eb87fb3c79291c41ece0aead98509c5c3203558271960ecc58fe69a19329640befc0ebd2450100
6
+ metadata.gz: 00f7d040355b847525a0c4d1ee6e47a5e64ab8040f9a7cb709fdbd482a912e6fef7d218a181bb9eb655fd3bdabd83a8af7d279527910c2ab783238b17780e519
7
+ data.tar.gz: dbe7b6e960a53d0be3f5ea0423b4bad1cb5dc90f0343c9ea7d73a897182537255f7a7d099e1e31d47e672abc24d29317bce511581c0d436f339091affbd8f74a
@@ -1,3 +1,11 @@
1
+ ## 2.0.0-beta3 (March 22, 2017)
2
+
3
+ * [BREAKING] `log_sql_parse_errors` config option is now on by default.
4
+ * [IMPROVEMENT] Improved handling of errors generated in the Rust agent.
5
+ * [IMPROVEMENT] Add a probe method to Instrumentable as a shortcut
6
+ * [IMRPOVEMENT] Add logging to Instrumentable for easier access
7
+ * [IMPROVEMENT] Improved logging during startup
8
+
1
9
  ## 2.0.0-beta2 (February 5, 2017)
2
10
 
3
11
  * [BUGFIX] Fix incorrect module path that caused installation issues
@@ -7,10 +15,23 @@
7
15
  * [FEATURE] New SQL lexer to support a wider variety of SQL queries.
8
16
  * [BREAKING] Drop support for a number of deprecated libraries, including Rails prior to 4.2, Ruby prior to 2.2, and Sinatra prior to 1.4.
9
17
 
18
+ ## 1.6.0 (March 21, 2018)
19
+
20
+ * [FEATURE] Time spent the Rails router is now identified separately in the trace
21
+ * [IMPROVEMENT] Switch logger to debug mode if tracing is enabled
22
+ * [IMPROVEMENT] Improved logging for a number of error cases
23
+ * [IMPROVEMENT] Middleware probe should now accept anything allowed by Rack::Lint
24
+ * [IMPROVEMENT] We were using arity checks to determine Rails version but due to other libraries' monkey patches this could sometimes fail. We just check version numbers now.
25
+ * [BUGFIX] Middleware probe no longer errors when Middleware returns a frozen array
26
+
27
+ ## 1.5.1 (February 7, 2018)
28
+
29
+ * [BUGFIX] `skylight doctor` no longer erroneously reports inability to reach Skylight servers.
30
+
10
31
  ## 1.5.0 (December 6, 2017)
11
32
 
12
33
  * [FEATURE] [Coach](https://github.com/gocardless/coach) instrumentation. Enabled automatically via ActiveSupport::Notifications.
13
- * [FEATURE] Option to enable or disable agent by setting SKYLIGHT_ENABLE via ENV.
34
+ * [FEATURE] Option to enable or disable agent by setting SKYLIGHT_ENABLED via ENV.
14
35
  * [IMPROVEMENT] Better logging for certain error cases.
15
36
  * [BUGFIX] Backport a SPEC compliance fix for older Rack::ETag to resolve case where the Middleware probe could cause empty traces.
16
37
  * [BUGFIX] Fix a case where using the non-block form of `Skylight.instrument` with `Skylight.done` could cause lost trace data.
@@ -0,0 +1,5 @@
1
+ E0001 - Spans were closed out of order
2
+ E0002 - Exceeded the number of unique span descriptions
3
+ E0003 - Exceeded maximum number of spans
4
+ E0004 - Failed to lex SQL query
5
+ E9999 - Unknown
@@ -246,7 +246,7 @@ $CFLAGS << " -std=c99 -Wall -fno-strict-aliasing"
246
246
 
247
247
  # Allow stricter checks to be turned on for development or debugging
248
248
  if SKYLIGHT_EXT_STRICT
249
- $CFLAGS << " -pedantic"
249
+ $CFLAGS << " -Wextra"
250
250
  end
251
251
 
252
252
  # TODO: Compute the relative path to the location
@@ -1,8 +1,8 @@
1
1
  ---
2
- version: "2.0.0-7fe2c49"
2
+ version: "2.0.0-5ca78bf"
3
3
  checksums:
4
- x86-linux: "57e0b65fd5bd03be9ad406711279d6164982107a4af144a85d4a352f035244ff"
5
- x86_64-linux: "5a2648e000f7b184dfaadd01f37399e808c80826613279571b61e4d7b122118a"
6
- x86_64-linux-musl: "39fc56d55782af71c8c37f93d1082e05c9a4c0decb68487ea6695d95971985f6"
7
- x86_64-darwin: "05a68826b7cef60c19d22302ec4f5eaa5134fd3be6d19513f6de76337fccb734"
8
- x86_64-freebsd: "97f4a65c0ba19cfa236fec73f2fdd74e0df9ae0e12ecec7709c996a3c4eb10f2"
4
+ x86-linux: "b919d4bba6cd4998f63115a558229ac4f151b5a2df1acec767a6956650b5dc36"
5
+ x86_64-linux: "862f509a9c4b53f4d18d1f41a1fbd6919ac822a7efa3c24a57acbfaf85a450ac"
6
+ x86_64-linux-musl: "b1bec2068b32465ae70291f5376f4384bcc09635be678974ee93a3f9a847bfe2"
7
+ x86_64-darwin: "4cad72f0b4d7fda8e785b98e4d1523f05216e4b925ab79db02713f463c387011"
8
+ x86_64-freebsd: "103bdfb9c47c90855b78f5e7bfa591e935ad6239533c6c3f07a1d82cf5a1528a"
@@ -44,10 +44,11 @@ STR2BUF(VALUE str) {
44
44
  };
45
45
  }
46
46
 
47
- #define CHECK_FFI(success, message) \
47
+ #define CHECK_FFI(code, method_name) \
48
48
  do { \
49
- if ((success) != 0 ) { \
50
- rb_raise(rb_eRuntimeError, message); \
49
+ if ((code) != 0 ) { \
50
+ VALUE error_class = rb_funcall(rb_eNativeError, rb_intern("for_code"), 1, INT2NUM(code)); \
51
+ rb_raise(error_class, method_name); \
51
52
  return Qnil; \
52
53
  } \
53
54
  } while(0)
@@ -99,9 +100,12 @@ typedef VALUE (*blocking_fn_t)(void*);
99
100
  */
100
101
 
101
102
  VALUE rb_mSkylight;
103
+ VALUE rb_eNativeError;
102
104
  VALUE rb_mCore;
103
105
  VALUE rb_mUtil;
104
106
  VALUE rb_cClock;
107
+ VALUE rb_cTrace;
108
+ VALUE rb_cInstrumenter;
105
109
 
106
110
  static const char* no_instrumenter_msg =
107
111
  "Instrumenter not currently running";
@@ -109,6 +113,7 @@ static const char* no_instrumenter_msg =
109
113
  static const char* consumed_trace_msg =
110
114
  "Trace objects cannot be used once it has been submitted to the instrumenter";
111
115
 
116
+
112
117
  static VALUE
113
118
  load_libskylight(VALUE klass, VALUE path) {
114
119
  int res;
@@ -175,7 +180,7 @@ instrumenter_new(VALUE klass, VALUE rb_env) {
175
180
 
176
181
  CHECK_FFI(
177
182
  sky_instrumenter_new(env, envc, &instrumenter),
178
- "failed to initialize instrumenter");
183
+ "Instrumenter#native_new");
179
184
 
180
185
  return Data_Wrap_Struct(klass, NULL, sky_instrumenter_free, instrumenter);
181
186
  }
@@ -213,7 +218,7 @@ instrumenter_stop(VALUE self) {
213
218
 
214
219
  CHECK_FFI(
215
220
  sky_instrumenter_stop(instrumenter),
216
- "native Instrumenter#stop failed");
221
+ "Instrumenter#native_stop");
217
222
 
218
223
  sky_deactivate_memprof();
219
224
 
@@ -249,7 +254,7 @@ instrumenter_track_desc(VALUE self, VALUE rb_endpoint, VALUE rb_desc) {
249
254
 
250
255
  CHECK_FFI(
251
256
  sky_instrumenter_track_desc(instrumenter, STR2BUF(rb_endpoint), STR2BUF(rb_desc), &tracked),
252
- "native Instrumenter#track_desc failed");
257
+ "Instrumenter#native_track_desc");
253
258
 
254
259
  if (tracked) {
255
260
  return Qtrue;
@@ -277,7 +282,7 @@ trace_new(VALUE klass, VALUE start, VALUE uuid, VALUE endpoint, VALUE meta) {
277
282
 
278
283
  CHECK_FFI(
279
284
  sky_trace_new(NUM2ULL(start), STR2BUF(uuid), STR2BUF(endpoint), &trace),
280
- "native Trace#new failed");
285
+ "Trace#native_new");
281
286
 
282
287
  sky_clear_allocation_count();
283
288
 
@@ -293,7 +298,7 @@ trace_get_started_at(VALUE self) {
293
298
 
294
299
  CHECK_FFI(
295
300
  sky_trace_start(trace, &start),
296
- "native Trace#started_at failed");
301
+ "Trace#native_get_started_at");
297
302
 
298
303
  return ULL2NUM(start);
299
304
  }
@@ -307,7 +312,7 @@ trace_get_endpoint(VALUE self) {
307
312
 
308
313
  CHECK_FFI(
309
314
  sky_trace_endpoint(trace, &endpoint),
310
- "native Trace#endpoint failed");
315
+ "Trace#native_get_endpoint");
311
316
 
312
317
  return BUF2STR(endpoint);
313
318
  }
@@ -321,13 +326,15 @@ trace_set_endpoint(VALUE self, VALUE endpoint) {
321
326
 
322
327
  CHECK_FFI(
323
328
  sky_trace_set_endpoint(trace, STR2BUF(endpoint)),
324
- "native Trace#set_endpoint failed");
329
+ "Trace#native_set_endpoint");
325
330
 
326
331
  return Qnil;
327
332
  }
328
333
 
329
334
  static VALUE
330
335
  trace_set_exception(VALUE self, VALUE exception) {
336
+ UNUSED(self);
337
+ UNUSED(exception);
331
338
  return Qnil;
332
339
  }
333
340
 
@@ -340,7 +347,7 @@ trace_get_uuid(VALUE self) {
340
347
 
341
348
  CHECK_FFI(
342
349
  sky_trace_uuid(trace, &uuid),
343
- "native Trace#uuid failed");
350
+ "Trace#native_get_uuid");
344
351
 
345
352
  return BUF2STR(uuid);
346
353
  }
@@ -357,7 +364,7 @@ trace_start_span(VALUE self, VALUE time, VALUE category) {
357
364
 
358
365
  CHECK_FFI(
359
366
  sky_trace_instrument(trace, NUM2ULL(time), STR2BUF(category), &span),
360
- "native Trace#start_span failed");
367
+ "Trace#native_start_span");
361
368
 
362
369
  if (sky_have_memprof()) {
363
370
  sky_trace_span_add_uint_annotation(trace, span, 2, sky_consume_allocations());
@@ -381,11 +388,27 @@ trace_stop_span(VALUE self, VALUE span, VALUE time) {
381
388
 
382
389
  CHECK_FFI(
383
390
  sky_trace_span_done(trace, FIX2UINT(span), NUM2ULL(time)),
384
- "native Trace#stop_span failed");
391
+ "Trace#native_stop_span");
385
392
 
386
393
  return Qnil;
387
394
  }
388
395
 
396
+ static VALUE
397
+ trace_span_get_category(VALUE self, VALUE span) {
398
+ sky_trace_t* trace;
399
+ sky_buf_t category;
400
+
401
+ My_Struct(trace, sky_trace_t, consumed_trace_msg);
402
+
403
+ CHECK_TYPE(span, T_FIXNUM);
404
+
405
+ CHECK_FFI(
406
+ sky_trace_span_get_category(trace, FIX2UINT(span), &category),
407
+ "Trace#native_span_get_category");
408
+
409
+ return BUF2STR(category);
410
+ }
411
+
389
412
  static VALUE
390
413
  trace_span_set_title(VALUE self, VALUE span, VALUE title) {
391
414
  sky_trace_t* trace;
@@ -402,6 +425,22 @@ trace_span_set_title(VALUE self, VALUE span, VALUE title) {
402
425
  return Qnil;
403
426
  }
404
427
 
428
+ static VALUE
429
+ trace_span_get_title(VALUE self, VALUE span) {
430
+ sky_trace_t* trace;
431
+ sky_buf_t title;
432
+
433
+ My_Struct(trace, sky_trace_t, consumed_trace_msg);
434
+
435
+ CHECK_TYPE(span, T_FIXNUM);
436
+
437
+ CHECK_FFI(
438
+ sky_trace_span_get_title(trace, FIX2UINT(span), &title),
439
+ "Trace#native_span_get_title");
440
+
441
+ return BUF2STR(title);
442
+ }
443
+
405
444
  static VALUE
406
445
  trace_span_set_description(VALUE self, VALUE span, VALUE desc) {
407
446
  sky_trace_t* trace;
@@ -413,23 +452,38 @@ trace_span_set_description(VALUE self, VALUE span, VALUE desc) {
413
452
 
414
453
  CHECK_FFI(
415
454
  sky_trace_span_set_desc(trace, FIX2UINT(span), STR2BUF(desc)),
416
- "native Trace#span_set_description failed");
455
+ "Trace#native_span_set_description");
417
456
 
418
457
  return Qnil;
419
458
  }
420
459
 
421
460
  static VALUE
422
461
  trace_span_set_meta(VALUE self, VALUE span, VALUE meta) {
462
+ UNUSED(self);
463
+ UNUSED(span);
464
+ UNUSED(meta);
465
+ return Qnil;
466
+ }
467
+
468
+ static VALUE
469
+ trace_span_started(VALUE self) {
470
+ UNUSED(self);
423
471
  return Qnil;
424
472
  }
425
473
 
426
474
  static VALUE
427
475
  trace_span_set_exception(VALUE self, VALUE span, VALUE exception, VALUE exception_details) {
476
+ UNUSED(self);
477
+ UNUSED(span);
478
+ UNUSED(exception);
479
+ UNUSED(exception_details);
428
480
  return Qnil;
429
481
  }
430
482
 
431
483
  static VALUE
432
484
  trace_span_get_correlation_header(VALUE self, VALUE span_id) {
485
+ UNUSED(self);
486
+ UNUSED(span_id);
433
487
  return Qnil;
434
488
  }
435
489
 
@@ -460,10 +514,10 @@ lex_sql(VALUE klass, VALUE rb_sql, VALUE rb_use_old_lexer) {
460
514
 
461
515
  if (RTEST(rb_use_old_lexer)) {
462
516
  CHECK_FFI(sky_lex_sql_old(sql, &title, &statement),
463
- "native lex_sql_old failed");
517
+ "Skylight#lex_sql (old)");
464
518
  } else {
465
519
  CHECK_FFI(sky_lex_sql(sql, &title, &statement),
466
- "native lex_sql failed");
520
+ "Skylight#lex_sql");
467
521
  }
468
522
 
469
523
  // Set the statement return
@@ -486,6 +540,9 @@ lex_sql(VALUE klass, VALUE rb_sql, VALUE rb_use_old_lexer) {
486
540
 
487
541
  void Init_skylight_native() {
488
542
  rb_mSkylight = rb_define_module("Skylight");
543
+
544
+ rb_eNativeError = rb_const_get(rb_mSkylight, rb_intern("NativeError"));
545
+
489
546
  rb_define_singleton_method(rb_mSkylight, "load_libskylight", load_libskylight, 1);
490
547
  rb_define_singleton_method(rb_mSkylight, "lex_sql", lex_sql, 2);
491
548
 
@@ -496,7 +553,7 @@ void Init_skylight_native() {
496
553
  rb_cClock = rb_define_class_under(rb_mUtil, "Clock", rb_cObject);
497
554
  rb_define_method(rb_cClock, "native_hrtime", clock_high_res_time, 0);
498
555
 
499
- VALUE rb_cTrace = rb_const_get(rb_mSkylight, rb_intern("Trace"));
556
+ rb_cTrace = rb_const_get(rb_mSkylight, rb_intern("Trace"));
500
557
  rb_define_singleton_method(rb_cTrace, "native_new", trace_new, 4);
501
558
  rb_define_method(rb_cTrace, "native_get_started_at", trace_get_started_at, 0);
502
559
  rb_define_method(rb_cTrace, "native_get_endpoint", trace_get_endpoint, 0);
@@ -505,13 +562,16 @@ void Init_skylight_native() {
505
562
  rb_define_method(rb_cTrace, "native_get_uuid", trace_get_uuid, 0);
506
563
  rb_define_method(rb_cTrace, "native_start_span", trace_start_span, 2);
507
564
  rb_define_method(rb_cTrace, "native_stop_span", trace_stop_span, 2);
565
+ rb_define_method(rb_cTrace, "native_span_get_category", trace_span_get_category, 1);
508
566
  rb_define_method(rb_cTrace, "native_span_set_title", trace_span_set_title, 2);
567
+ rb_define_method(rb_cTrace, "native_span_get_title", trace_span_get_title, 1);
509
568
  rb_define_method(rb_cTrace, "native_span_set_description", trace_span_set_description, 2);
510
569
  rb_define_method(rb_cTrace, "native_span_set_meta", trace_span_set_meta, 2);
570
+ rb_define_method(rb_cTrace, "native_span_started", trace_span_started, 1);
511
571
  rb_define_method(rb_cTrace, "native_span_set_exception", trace_span_set_exception, 3);
512
572
  rb_define_method(rb_cTrace, "native_span_get_correlation_header", trace_span_get_correlation_header, 1);
513
573
 
514
- VALUE rb_cInstrumenter = rb_const_get(rb_mSkylight, rb_intern("Instrumenter"));
574
+ rb_cInstrumenter = rb_const_get(rb_mSkylight, rb_intern("Instrumenter"));
515
575
  rb_define_singleton_method(rb_cInstrumenter, "native_new", instrumenter_new, 1);
516
576
  rb_define_method(rb_cInstrumenter, "native_start", instrumenter_start, 0);
517
577
  rb_define_method(rb_cInstrumenter, "native_stop", instrumenter_stop, 0);
@@ -6,6 +6,7 @@ require 'skylight/middleware'
6
6
  require 'skylight/api'
7
7
  require 'skylight/helpers'
8
8
  require 'skylight/config'
9
+ require 'skylight/errors'
9
10
  require 'skylight/native'
10
11
 
11
12
  module Skylight
@@ -28,9 +29,4 @@ module Skylight
28
29
  Config
29
30
  end
30
31
 
31
- # Install probes
32
- def self.probe(*probes)
33
- Core::Probes.probe(*probes)
34
- end
35
-
36
32
  end
@@ -11,7 +11,7 @@ module Skylight
11
11
  say "Checking SSL"
12
12
  http = Util::HTTP.new(config)
13
13
  indent do
14
- req = http.get("/", "Accept" => "text/html")
14
+ req = http.get("/status")
15
15
  if req.success?
16
16
  say "OK", :green
17
17
  else
@@ -113,7 +113,7 @@ module Skylight
113
113
  logger.level = Logger::DEBUG
114
114
  # Remove excess formatting
115
115
  logger.formatter = proc { |severity, datetime, progname, msg|
116
- msg = msg.sub("[SKYLIGHT] [#{Skylight::Core::VERSION}] ", '')
116
+ msg = msg.sub("[SKYLIGHT] [#{Skylight::VERSION}] ", '')
117
117
  say "#{severity} - #{msg}" # Definitely non-standard
118
118
  }
119
119
  config.logger = logger
@@ -0,0 +1,57 @@
1
+ module Skylight
2
+ class NativeError < StandardError
3
+
4
+ @@classes = { }
5
+
6
+ def self.register(code, name, message)
7
+ if @@classes.has_key?(code)
8
+ raise "Duplicate error class code: #{code}; name=#{name}"
9
+ end
10
+
11
+ Skylight.module_eval <<-ruby
12
+ class #{name}Error < NativeError
13
+ def self.code; #{code}; end
14
+ def self.message; #{message.to_json}; end
15
+ end
16
+ ruby
17
+
18
+ klass = Skylight.const_get("#{name}Error")
19
+
20
+ @@classes[code] = klass
21
+ end
22
+
23
+ def self.for_code(code)
24
+ @@classes[code] || self
25
+ end
26
+
27
+ attr_reader :method_name
28
+
29
+ def self.code
30
+ 9999
31
+ end
32
+
33
+ def self.message
34
+ "Encountered an unknown internal error"
35
+ end
36
+
37
+ def initialize(method_name)
38
+ @method_name = method_name
39
+ super(sprintf("[E%04d] %s [%s]", code, message, method_name))
40
+ end
41
+
42
+ def code
43
+ self.class.code
44
+ end
45
+
46
+ def formatted_code
47
+ "%04d" % code
48
+ end
49
+
50
+ # E0003
51
+ register(3, "MaximumTraceSpans", "Exceeded maximum number of spans in a trace.")
52
+
53
+ # E0004
54
+ register(4, "SqlLex", "Failed to lex SQL query.")
55
+ end
56
+
57
+ end
@@ -56,7 +56,7 @@ module Skylight
56
56
 
57
57
  if File.exist?(install_log) && File.read(install_log) =~ /ERROR/
58
58
  config.alert_logger.error \
59
- "[SKYLIGHT] [#{Skylight::Core::VERSION}] The Skylight native extension failed to install. " \
59
+ "[SKYLIGHT] [#{Skylight::VERSION}] The Skylight native extension failed to install. " \
60
60
  "Please check #{install_log} and notify support@skylight.io. " \
61
61
  "The missing extension will not affect the functioning of your application."
62
62
  end
@@ -65,7 +65,7 @@ module Skylight
65
65
  # @api private
66
66
  def self.warn_skylight_native_missing(config)
67
67
  config.alert_logger.error \
68
- "[SKYLIGHT] [#{Skylight::Core::VERSION}] The Skylight native extension for " \
68
+ "[SKYLIGHT] [#{Skylight::VERSION}] The Skylight native extension for " \
69
69
  "your platform wasn't found. Supported operating systems are " \
70
70
  "Linux 2.6.18+ and Mac OS X 10.8+. The missing extension will not " \
71
71
  "affect the functioning of your application. If you are on a " \
@@ -3,12 +3,10 @@ module Skylight
3
3
  module Sinatra
4
4
  class Probe
5
5
  def install
6
- puts "Installed"
7
6
  class << ::Sinatra::Base
8
7
  alias build_without_sk build
9
8
 
10
9
  def build(*args, &block)
11
- puts "Using Middleware"
12
10
  self.use Skylight::Middleware
13
11
  build_without_sk(*args, &block)
14
12
  end
@@ -1,4 +1,4 @@
1
1
  module Skylight
2
- VERSION = '2.0.0-beta2'
2
+ VERSION = '2.0.0-beta3'
3
3
  end
4
4
 
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: 2.0.0.beta2
4
+ version: 2.0.0.beta3
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-02-05 00:00:00.000000000 Z
11
+ date: 2018-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: skylight-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0.beta2
19
+ version: 2.0.0.beta3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0.beta2
26
+ version: 2.0.0.beta3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0.9'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rake-compiler
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 1.0.4
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.0.4
139
153
  description:
140
154
  email:
141
155
  - engineering@tilde.io
@@ -148,6 +162,7 @@ files:
148
162
  - CHANGELOG.md
149
163
  - CLA.md
150
164
  - CONTRIBUTING.md
165
+ - ERRORS.md
151
166
  - LICENSE.md
152
167
  - README.md
153
168
  - bin/skylight
@@ -163,6 +178,7 @@ files:
163
178
  - lib/skylight/cli/helpers.rb
164
179
  - lib/skylight/config.rb
165
180
  - lib/skylight/data/cacert.pem
181
+ - lib/skylight/errors.rb
166
182
  - lib/skylight/helpers.rb
167
183
  - lib/skylight/instrumenter.rb
168
184
  - lib/skylight/middleware.rb