Module: Chatterbox::RailsCatcher

Defined in:
lib/chatterbox/rails_catcher.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object


4
5
6
7
8
9
10
# File 'lib/chatterbox/rails_catcher.rb', line 4

def self.included(base)
  if base.instance_methods.map(&:to_s).include? 'rescue_action_in_public' and !base.instance_methods.map(&:to_s).include? 'rescue_action_in_public_without_chatterbox'
    base.send(:alias_method, :rescue_action_in_public_without_chatterbox, :rescue_action_in_public)
    base.send(:alias_method, :rescue_action_in_public, :rescue_action_in_public_with_chatterbox)
    base.hide_action(:rescue_action_in_public_with_chatterbox, :rescue_action_in_public_without_chatterbox)
  end
end

Instance Method Details

#rescue_action_in_public_with_chatterbox(exception) ⇒ Object

Overrides the rescue_action method in ActionController::Base, but does not inhibit any custom processing that is defined with Rails 2's exception helpers.


14
15
16
17
18
19
20
21
# File 'lib/chatterbox/rails_catcher.rb', line 14

def rescue_action_in_public_with_chatterbox(exception)
  Chatterbox.logger.debug { "Chatterbox caught exception '#{exception}' - about to handle" }
  options = { :exception => exception }
  options.merge!(:request => request) if self.respond_to?(:request)
  Chatterbox::ExceptionNotification.handle(options)
  Chatterbox.logger.debug { "Chatterbox handing exception '#{exception}' off to normal rescue handling" }
  rescue_action_in_public_without_chatterbox(exception)
end