squash_ruby 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -4,6 +4,8 @@ Squash Client Library: Ruby
4
4
  This client library reports exceptions to Squash, the Squarish exception
5
5
  reporting and management system.
6
6
 
7
+ [![Build Status](https://travis-ci.org/SquareSquash/ruby.png)](https://travis-ci.org/SquareSquash/ruby)
8
+
7
9
  Documentation
8
10
  -------------
9
11
 
@@ -160,12 +162,13 @@ only one of the following configuration keys:
160
162
 
161
163
  * `revision_file`: The path to a file storing the SHA1 of the current Git
162
164
  revision. This is the revision of the code that is currently running.
165
+ * `revision`: The 40-character SHA1 of the current deployed revision.
163
166
  * `repository_root`: The path to the working directory of the Git repository
164
167
  that is currently running. Use this option if your deployed code is a working
165
168
  Git repository.
166
169
 
167
- By default, `repository_root` is assumed and is set to `Dir.getwd`.
168
- `revision_file` overrides `repository_root`.
170
+ By default, `repository_root` is assumed and is set to `Dir.getwd`. Other
171
+ options override `repository_root`.
169
172
 
170
173
  ### Error Transmission
171
174
 
data/lib/squash/ruby.rb CHANGED
@@ -382,7 +382,7 @@ module Squash
382
382
 
383
383
  def self.prepare_backtrace(bt)
384
384
  if defined?(JRuby)
385
- bt.map do |element|
385
+ bt.map(&:strip).map do |element|
386
386
  if element =~ /^((?:[a-z0-9_$]+\.)*(?:[a-z0-9_$]+))\.(\w+)\((\w+.java):(\d+)\)$/i
387
387
  # special JRuby backtrace element of the form "org.jruby.RubyHash$27.visit(RubyHash.java:1646)"
388
388
  {
@@ -392,6 +392,35 @@ module Squash
392
392
  'symbol' => $2,
393
393
  'class' => $1
394
394
  }
395
+ elsif element =~ /^(.+?)\.(\w+)\(Native Method\)$/
396
+ {
397
+ 'type' => 'java_native',
398
+ 'symbol' => $2,
399
+ 'class' => $1
400
+ }
401
+ elsif element =~ /^rubyjit[$.](.+?)\$\$(\w+?[?!]?)_[0-9A-F]{40}.+?__(?:file|ensure)__\.call\(.+\)$/
402
+ {
403
+ 'type' => 'jruby_block',
404
+ 'class' => $1,
405
+ 'symbol' => $2
406
+ }
407
+ elsif element =~ /^rubyjit[$.](.+?)\$\$(\w+?[?!]?)_[0-9A-F]{40}.+?__(?:file|ensure)__\((.+?):(\d+)\)$/
408
+ {
409
+ 'file' => $3,
410
+ 'line' => $4.to_i,
411
+ 'symbol' => "#{$1}##{$2}"
412
+ }
413
+ elsif element =~ /^.+\.call\(.+?(\w+)\.gen\)$/
414
+ {
415
+ 'type' => 'asm_invoker',
416
+ 'file' => $1 + '.gen'
417
+ }
418
+ elsif element =~ /^rubyjit[$.](.+?)\$\$(\w+?[?!]?)_[0-9A-F]{40}.+?__(?:file|ensure)__\((.+?)\)$/
419
+ {
420
+ 'file' => $3,
421
+ 'type' => 'jruby_noline',
422
+ 'symbol' => "#{$1}##{$2}"
423
+ }
395
424
  else
396
425
  if element.include?(' at ')
397
426
  method, fileline = element.split(' at ')
@@ -460,16 +489,19 @@ module Squash
460
489
  elsif instance.kind_of?(Array) && elements_only
461
490
  instance.map { |i| valueify(i) }
462
491
  else
463
- filtered = value_filter(instance)
464
- yaml = begin filtered.to_yaml; rescue Exception; nil end
465
- json = begin filtered.to_json; rescue Exception; nil end
492
+ filtered = value_filter(instance)
493
+ yaml = begin filtered.to_yaml; rescue Exception; nil end
494
+ json = begin filtered.to_json; rescue Exception; nil end
495
+ inspect_result = begin filtered.inspect; rescue Exception => e; "[#{e.class}: #{e} raised when calling #inspect]" end
496
+ to_s_result = begin filtered.to_s; rescue Exception => e; "[#{e.class}: #{e} raised when calling #to_s]" end
497
+
466
498
  {
467
499
  'language' => 'ruby',
468
500
  'class_name' => filtered.class.to_s,
469
- 'inspect' => filtered.inspect,
501
+ 'inspect' => inspect_result,
470
502
  'yaml' => yaml,
471
503
  'json' => json,
472
- 'to_s' => (filtered.to_s rescue nil)
504
+ 'to_s' => to_s_result
473
505
  }
474
506
  end
475
507
  end
@@ -530,7 +562,9 @@ module Squash
530
562
 
531
563
  # @private
532
564
  def self.current_revision
533
- revision = if configuration(:revision_file)
565
+ revision = if configuration(:revision)
566
+ configuration(:revision)
567
+ elsif configuration(:revision_file)
534
568
  File.read(configuration(:revision_file)).chomp.strip
535
569
  else
536
570
  head_file = File.join(configuration(:repository_root), '.git', 'HEAD')
@@ -34,7 +34,6 @@ class Exception
34
34
  else
35
35
  {}
36
36
  end
37
- Squash::Ruby.check_user_data user_data
38
37
  super(*args).user_data(user_data)
39
38
  end
40
39
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squash_ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 0
9
8
  - 1
10
- version: 1.0.1
9
+ - 0
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Morgan
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-01-25 00:00:00 Z
18
+ date: 2013-02-20 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  requirement: &id001 !ruby/object:Gem::Requirement