Class: RailsLogParser::Action

Inherits:
Object
  • Object
show all
Extended by:
Enumerize
Defined in:
lib/rails_log_parser/action.rb

Constant Summary collapse

SEVERITIES =
%i[debug info warn error fatal].freeze
KNOWN_EXCEPTIONS =
{
  "Can't verify CSRF token authenticity." => :warn,
  'ActionController::InvalidAuthenticityToken' => :fatal,
  'ActionController::RoutingError' => :fatal,
  'ActionController::UnfilteredParameters' => :fatal,
  'ActionController::UnknownFormat' => :fatal,
  'ActiveRecord::RecordNotFound' => :fatal,
  'ActionDispatch::Http::MimeNegotiation::InvalidType' => :fatal,
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, id) ⇒ Action

Returns a new instance of Action.



23
24
25
26
27
28
# File 'lib/rails_log_parser/action.rb', line 23

def initialize(type, id)
  self.type = type
  @id = id
  @messages = []
  @stacktrace = []
end

Instance Attribute Details

#datetimeObject

Returns the value of attribute datetime.



21
22
23
# File 'lib/rails_log_parser/action.rb', line 21

def datetime
  @datetime
end

Instance Method Details

#add_message(value) ⇒ Object



63
64
65
66
# File 'lib/rails_log_parser/action.rb', line 63

def add_message(value)
  @messages.push(value)
  @headline = value if @headline.nil?
end

#add_stacktrace(value) ⇒ Object



68
69
70
# File 'lib/rails_log_parser/action.rb', line 68

def add_stacktrace(value)
  @stacktrace.push(value)
end

#after?(datetime) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/rails_log_parser/action.rb', line 59

def after?(datetime)
  @datetime > datetime
end

#headlineObject



51
52
53
# File 'lib/rails_log_parser/action.rb', line 51

def headline
  @headline.presence || @messages.first
end

#ignore?Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# File 'lib/rails_log_parser/action.rb', line 45

def ignore?
  @messages.any? do |message|
    RailsLogParser.ignore_lines.any? {|ignore| message.match?(ignore) }
  end
end

#known_exception?(key = nil) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
42
43
# File 'lib/rails_log_parser/action.rb', line 38

def known_exception?(key = nil)
  severity_index = SEVERITIES.index(severity.to_sym)
  @messages.any? do |message|
    KNOWN_EXCEPTIONS.any? { |e, s| message.include?(e) && severity_index <= SEVERITIES.index(s) && (key.nil? || key == e) }
  end
end

#severity=(value) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/rails_log_parser/action.rb', line 30

def severity=(value)
  value = value.downcase.to_sym
  return unless severity.nil? || SEVERITIES.index(severity.to_sym) < SEVERITIES.index(value)

  super(value)
  @headline = nil
end