Sha256: 2f94552ce8d0383f4008f066c030bfff87deca0a8dd3e6c908749f8daa5e20e7

Contents?: true

Size: 1.24 KB

Versions: 5

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

5 entries across 5 versions & 1 rubygems

Version Path
chatterbox-0.8.5 lib/chatterbox/rails_catcher.rb
chatterbox-0.8.4 lib/chatterbox/rails_catcher.rb
chatterbox-0.8.3 lib/chatterbox/rails_catcher.rb
chatterbox-0.8.2 lib/chatterbox/rails_catcher.rb
chatterbox-0.8.1 lib/chatterbox/rails_catcher.rb