class BloggerException

Constants

DESCRIPTIONS

Attributes

cause[R]
date[R]
description[R]
file[R]
line[R]
message[R]
scope[R]
time[R]
type[R]

Public Class Methods

new() click to toggle source
# File lib/BloggerException.rb, line 2
def initialize
  @file = $0
  @line = $!.backtrace[0].split(':')[1]
  @cause = $!.backtrace[0].split('`')[-1]
  @message = $!.message
  @type = $!.class.to_s
  @description = generate_description(self.type.to_sym)
  @scope = $!.backtrace[0].split(/\./)[0]
  @time = Time.now.strftime("%I:%M:%S %p")
  @date = Time.now.strftime("%m/%d/%y")
end

Public Instance Methods

display() click to toggle source
# File lib/BloggerException.rb, line 32
  def display
    puts <<~MLS
    \tClass #{self.type}
    \tDescription: #{self.description}
    \tLine: #{self.line}
    \tTime: #{self.time}
    \tDate: #{self.date}
    MLS
  end
generate_description(type) click to toggle source
# File lib/BloggerException.rb, line 49
def generate_description(type)
  return DESCRIPTIONS[type] if DESCRIPTIONS.key?(type)
  return 'Check out https://ruby-doc.org/core-2.7.0/Exception.html for more information.'
end
log() click to toggle source
# File lib/BloggerException.rb, line 42
def log
  File.open('structured_exceptions.yml', 'a+') do |file|
    file.write (self.to_yaml)
  end 
  puts 'Bug Logged Successfully:'
end
to_s() click to toggle source
# File lib/BloggerException.rb, line 19
  def to_s
    <<~MLS 
    :file: #{file}
    :line: #{line}
    :cause: #{cause}
    :message: #{message}
    :type: #{type}
    :description #{description}
    :scope: #{scope}
    :time: #{time}
    MLS
  end