Sha256: 1781052b0f2095478292dd359040dda18bc5a0b61ddd8d88b8ea3cbd65eff81d

Contents?: true

Size: 1.24 KB

Versions: 3

Compression:

Stored size: 1.24 KB

Contents

module Chatterbox
  module RailsCatcher
    
    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
    
    # Overrides the rescue_action method in ActionController::Base, but does not inhibit
    # any custom processing that is defined with Rails 2's exception helpers.
    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
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
chatterbox-0.6.2 lib/chatterbox/rails_catcher.rb
chatterbox-0.6.1 lib/chatterbox/rails_catcher.rb
chatterbox-0.6.0 lib/chatterbox/rails_catcher.rb