wrangler 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -105,7 +105,18 @@ module Wrangler
105
105
  # if you do change this, you really should have a good reason for it and
106
106
  # really know what you're doing. really.
107
107
  :absolute_last_resort_default_error_template =>
108
- File.join(WRANGLER_ROOT,'rails','app','views','wrangler','500.html')
108
+ File.join(WRANGLER_ROOT,'rails','app','views','wrangler','500.html'),
109
+
110
+ # allows for inserting additional data/comments/status/environment into
111
+ # the notification emails. possibilities include fetching the release number,
112
+ # patch info, current state of different services....
113
+ # pass a proc instance that accepts a single
114
+ # argument, the request object (if any).
115
+ # (e.g. +Proc.new { |request| puts "request is: #{request}" }+, but don't
116
+ # do that, that would be redundant, silly and not secure).
117
+ # NOTE: +request+ can be nil (if background process, for example), so
118
+ # implement accordingly
119
+ :call_for_supplementary_info => nil
109
120
  }
110
121
 
111
122
  # give access to config
@@ -255,7 +266,9 @@ module Wrangler
255
266
  request = options[:request]
256
267
  render_errors = options[:render_errors] || false
257
268
  proc_name = options[:proc_name] || config[:app_name]
258
- error_messages = options[:error_messages]
269
+ error_messages = options[:error_messages] || ['']
270
+
271
+ error_messages = [error_messages] unless error_messages.is_a?(Array)
259
272
 
260
273
  if exception.respond_to?(:backtrace)
261
274
  backtrace = exception.backtrace
@@ -267,18 +280,26 @@ module Wrangler
267
280
  # that should NOT be logged/emailed (passwords etc.)
268
281
  request_data = request_data_from_request(request) unless request.nil?
269
282
 
283
+ supplementary_info = nil
284
+
285
+ unless config[:call_for_supplementary_info].nil?
286
+ supplementary_info = config[:call_for_supplementary_info].call(request)
287
+ supplementary_info = [supplementary_info] unless supplementary_info.is_a?(Array)
288
+ end
289
+
290
+ unless supplementary_info.blank?
291
+ error_messages << "Supplementary info:"
292
+ error_messages += supplementary_info
293
+ end
294
+
270
295
  if exception.nil?
271
296
  exception_classname = nil
272
297
  status_code = nil
273
- log_error error_messages
298
+ log_error error_messages.inspect
274
299
  log_error backtrace
275
300
  log_error "Request params were:"
276
301
  log_error request_data.to_yaml
277
- if error_messages.is_a?(Array)
278
- error_string = error_messages.first
279
- else
280
- error_string = error_messages
281
- end
302
+ error_string = error_messages.first
282
303
  else
283
304
  status_code =
284
305
  Wrangler::ExceptionHandler.status_code_for_exception(exception)
@@ -308,6 +329,7 @@ module Wrangler
308
329
  error_messages,
309
330
  proc_name,
310
331
  backtrace,
332
+ supplementary_info,
311
333
  status_code,
312
334
  request_data)
313
335
  else
@@ -317,6 +339,7 @@ module Wrangler
317
339
  error_messages,
318
340
  proc_name,
319
341
  backtrace,
342
+ supplementary_info,
320
343
  status_code,
321
344
  request_data,
322
345
  request)
@@ -62,6 +62,10 @@ module Wrangler
62
62
  # - backtrace: the stack trace from the exception (passing in excplicitly
63
63
  # because serializing the exception does not preserve the
64
64
  # backtrace (in case delayed_job is used to async the email)
65
+ # - supplementary_info: any other messages to be dumped into the
66
+ # notification email. these are provided by the
67
+ # client code via the :call_for_supplementary_info
68
+ # option. can be a string or an array of strings.
65
69
  # - status_code: the (string) http status code that the exception has been
66
70
  # mapped to. Optional, but no default is provided, so
67
71
  # no status code info will be contained in the email.
@@ -78,6 +82,7 @@ module Wrangler
78
82
  additional_messages,
79
83
  proc_name,
80
84
  backtrace,
85
+ supplementary_info,
81
86
  status_code = nil,
82
87
  request_data = nil,
83
88
  request = nil)
@@ -102,6 +107,7 @@ module Wrangler
102
107
  :error_message => error_message,
103
108
  :additional_messages => additional_messages,
104
109
  :backtrace => backtrace,
110
+ :supplementary_info => supplementary_info,
105
111
  :status_code => status_code,
106
112
  :request_data => request_data,
107
113
  :request => request
@@ -72,7 +72,7 @@ module Wrangler
72
72
 
73
73
  if error_messages.is_a?(Array)
74
74
  msgs.concat error_messages
75
- elsif !error_messages.blank?
75
+ elsif !error_messages.nil? && !error_messages.empty?
76
76
  msgs << error_messages
77
77
  end
78
78
 
@@ -8,6 +8,8 @@
8
8
  <%= @protocol %><%= @host %><%= @uri %>
9
9
  <% end -%>
10
10
 
11
+ At <%= Time.now %>:
12
+
11
13
  <% if !@exception_classname.nil? -%>
12
14
  A/an <%= @exception_classname %> occurred:
13
15
  <% else -%>
@@ -55,3 +57,12 @@ REQUEST DATA
55
57
  <%= "#{k}: #{@request_data[k].inspect}" %>
56
58
  <% end -%>
57
59
  <% end -%>
60
+
61
+ <% unless @supplementary_info.blank? -%>
62
+ --------------------------------------------------
63
+ SUPPLEMENTARY INFO
64
+ --------------------------------------------------
65
+ <% @supplementary_info.each do |line| -%>
66
+ <%= line %>
67
+ <% end -%>
68
+ <% end -%>
data/wrangler.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{wrangler}
8
- s.version = "0.1.20"
8
+ s.version = "0.1.21"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Percival"]
12
- s.date = %q{2010-05-03}
12
+ s.date = %q{2010-05-18}
13
13
  s.description = %q{A gem for handling exceptions thrown inside your Rails app. If you include the
14
14
  gem in your application controller, wrangler will render the error pages you
15
15
  configure for each exception or HTTP error code. It will also handle notifying
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wrangler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Percival
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-05-03 00:00:00 -07:00
12
+ date: 2010-05-18 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency