toadhopper 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.md +3 -2
  2. data/lib/toadhopper.rb +19 -5
  3. metadata +17 -5
data/README.md CHANGED
@@ -38,5 +38,6 @@ To build the gem:
38
38
 
39
39
  * [Tim Lucas](http://github.com/toolmantim)
40
40
  * [Samuel Tesla](http://github.com/stesla)
41
- * [atmos](http://github.com/atmos)
42
- * [indirect](http://github.com/indirect)
41
+ * [Corey Donohoe](http://github.com/atmos)
42
+ * [Andre Arko](http://github.com/indirect)
43
+ * [Loren Segal](http://github.com/lsegal)
data/lib/toadhopper.rb CHANGED
@@ -4,7 +4,7 @@ require 'ostruct'
4
4
 
5
5
  # Posts errors to the Hoptoad API
6
6
  class Toadhopper
7
- VERSION = "1.0.3"
7
+ VERSION = "1.0.4"
8
8
  FILTER_REPLACEMENT = "[FILTERED]"
9
9
 
10
10
  # Hoptoad API response
@@ -52,12 +52,14 @@ class Toadhopper
52
52
  post_document(document_for(error, options), {'X-Hoptoad-Client-Name' => options[:notifier_name]})
53
53
  end
54
54
 
55
+ private
56
+
55
57
  def document_defaults(error)
56
58
  {
57
59
  :error => error,
58
60
  :api_key => api_key,
59
61
  :environment => ENV.to_hash,
60
- :backtrace => error.backtrace.map {|l| backtrace_line(l)},
62
+ :backtrace => backtrace_for(error),
61
63
  :url => 'http://localhost/',
62
64
  :component => 'http://localhost/',
63
65
  :action => nil,
@@ -77,8 +79,6 @@ class Toadhopper
77
79
  data
78
80
  end
79
81
 
80
- private
81
-
82
82
  def filters
83
83
  [@filters].flatten.compact
84
84
  end
@@ -107,8 +107,22 @@ class Toadhopper
107
107
  scope.instance_eval ERB.new(notice_template, nil, '-').src
108
108
  end
109
109
 
110
+ BacktraceLine = Struct.new(:file, :number, :method)
111
+
112
+ def backtrace_for(error)
113
+ lines = Array(error.backtrace).map {|l| backtrace_line(l)}
114
+ if lines.empty?
115
+ lines << BacktraceLine.new("no-backtrace", "1", nil)
116
+ end
117
+ lines
118
+ end
119
+
110
120
  def backtrace_line(line)
111
- Struct.new(:file, :number, :method).new(*line.match(%r{^(.+):(\d+)(?::in `([^']+)')?$}).captures)
121
+ if match = line.match(%r{^(.+):(\d+)(?::in `([^']+)')?$})
122
+ BacktraceLine.new(*match.captures)
123
+ else
124
+ BacktraceLine.new(line, "1", nil)
125
+ end
112
126
  end
113
127
 
114
128
  def notice_template
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toadhopper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 4
10
+ version: 1.0.4
5
11
  platform: ruby
6
12
  authors:
7
13
  - Tim Lucas
@@ -12,7 +18,7 @@ autorequire:
12
18
  bindir: bin
13
19
  cert_chain: []
14
20
 
15
- date: 2010-04-01 00:00:00 +11:00
21
+ date: 2010-06-14 00:00:00 -07:00
16
22
  default_executable:
17
23
  dependencies: []
18
24
 
@@ -48,21 +54,27 @@ rdoc_options:
48
54
  require_paths:
49
55
  - lib
50
56
  required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ">="
53
60
  - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
54
64
  version: "0"
55
- version:
56
65
  required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
57
67
  requirements:
58
68
  - - ">="
59
69
  - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
60
73
  version: "0"
61
- version:
62
74
  requirements: []
63
75
 
64
76
  rubyforge_project:
65
- rubygems_version: 1.3.5
77
+ rubygems_version: 1.3.7
66
78
  signing_key:
67
79
  specification_version: 3
68
80
  summary: Post error notifications to Hoptoad