Class: RailsExceptionHandler::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_exception_handler/parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env, request, exception, controller) ⇒ Parser

Returns a new instance of Parser.



4
5
6
7
8
9
10
11
12
13
# File 'lib/rails_exception_handler/parser.rb', line 4

def initialize(env, request, exception, controller)
  @env = env
  @request  = request
  @exception = exception
  @exception = exception.exception if @exception.class.to_s == "ActionDispatch::ExceptionWrapper"
  @controller = controller
  @external_info = {}
  @internal_info = {}
  parse
end

Instance Attribute Details

#external_infoObject

Returns the value of attribute external_info.



2
3
4
# File 'lib/rails_exception_handler/parser.rb', line 2

def external_info
  @external_info
end

#internal_infoObject

Returns the value of attribute internal_info.



2
3
4
# File 'lib/rails_exception_handler/parser.rb', line 2

def internal_info
  @internal_info
end

Instance Method Details

#anon_user?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/rails_exception_handler/parser.rb', line 49

def anon_user?
  [nil,'Anonymous'].include?()
end

#ignore?Boolean

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rails_exception_handler/parser.rb', line 29

def ignore?
  filters = RailsExceptionHandler.configuration.filters
  filters.each do |filter|
    if(filter.class == Symbol)
      result = send("filter_#{filter}")
    elsif(filter.class == Hash)
      result = send("filter_#{filter.keys[0]}", filter.values[0])
    else
      raise "RailsExceptionHandler: Unknown filter #{filter.inspect}"
    end
    return true if(result)
  end
  return false
end

#parseObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rails_exception_handler/parser.rb', line 15

def parse
  @internal_info[:error_class] =    @exception.class.to_s
  @internal_info[:target_url] =     @request.url
  @internal_info[:referer_url] =    @request.referer
  @internal_info[:user_agent] =     @request.user_agent

  config = RailsExceptionHandler.configuration
  config.request_info_block.call(@external_info, @request) if(config.request_info_block)
  config.exception_info_block.call(@external_info, @exception) if(config.exception_info_block)
  config.env_info_block.call(@external_info, @env) if(config.env_info_block)
  config.global_info_block.call(@external_info) if(config.global_info_block)
  @external_info[:user_info] =  if()
end

#routing_error?Boolean

Returns:

  • (Boolean)


44
45
46
47
# File 'lib/rails_exception_handler/parser.rb', line 44

def routing_error?
  routing_errors = ['ActionController::RoutingError', 'AbstractController::ActionNotFound', 'ActiveRecord::RecordNotFound']
  routing_errors.include?(@exception.class.to_s)
end