Class: SimpleCovMcp::ErrorHandler
- Inherits:
-
Object
- Object
- SimpleCovMcp::ErrorHandler
- Defined in:
- lib/simplecov_mcp/error_handler.rb
Overview
Handles error reporting and logging with configurable behavior
Constant Summary collapse
- VALID_ERROR_MODES =
[:off, :log, :debug].freeze
Instance Attribute Summary collapse
-
#error_mode ⇒ Object
Returns the value of attribute error_mode.
-
#logger ⇒ Object
Returns the value of attribute logger.
Instance Method Summary collapse
-
#convert_standard_error(error, context: :general) ⇒ Object
Convert standard Ruby errors to user-friendly custom errors.
-
#handle_error(error, context: nil, reraise: true) ⇒ Object
Handle an error with appropriate logging and re-raising behavior.
-
#initialize(error_mode: :log, logger: nil) ⇒ ErrorHandler
constructor
A new instance of ErrorHandler.
- #log_errors? ⇒ Boolean
- #show_stack_traces? ⇒ Boolean
Constructor Details
#initialize(error_mode: :log, logger: nil) ⇒ ErrorHandler
Returns a new instance of ErrorHandler.
14 15 16 17 18 19 20 21 |
# File 'lib/simplecov_mcp/error_handler.rb', line 14 def initialize(error_mode: :log, logger: nil) unless VALID_ERROR_MODES.include?(error_mode) raise ArgumentError, "Invalid error_mode: #{error_mode.inspect}. Valid modes: #{VALID_ERROR_MODES.inspect}" end @error_mode = error_mode @logger = logger end |
Instance Attribute Details
#error_mode ⇒ Object
Returns the value of attribute error_mode.
10 11 12 |
# File 'lib/simplecov_mcp/error_handler.rb', line 10 def error_mode @error_mode end |
#logger ⇒ Object
Returns the value of attribute logger.
10 11 12 |
# File 'lib/simplecov_mcp/error_handler.rb', line 10 def logger @logger end |
Instance Method Details
#convert_standard_error(error, context: :general) ⇒ Object
Convert standard Ruby errors to user-friendly custom errors.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/simplecov_mcp/error_handler.rb', line 42 def convert_standard_error(error, context: :general) case error when Errno::ENOENT convert_enoent(error, context) when Errno::EACCES convert_eacces(error, context) when Errno::EISDIR filename = extract_filename(error.) NotAFileError.new("Expected file but found directory: #{filename}", error) when JSON::ParserError CoverageDataError.new("Invalid coverage data format: #{error.}", error) when TypeError CoverageDataError.new("Invalid coverage data structure: #{error.}", error) when ArgumentError convert_argument_error(error, context) when NoMethodError convert_no_method_error(error, context) when RuntimeError convert_runtime_error(error, context) else Error.new("An unexpected error occurred: #{error.}", error) end end |
#handle_error(error, context: nil, reraise: true) ⇒ Object
Handle an error with appropriate logging and re-raising behavior
32 33 34 35 36 37 |
# File 'lib/simplecov_mcp/error_handler.rb', line 32 def handle_error(error, context: nil, reraise: true) log_error(error, context) if reraise raise error.is_a?(SimpleCovMcp::Error) ? error : convert_standard_error(error) end end |
#log_errors? ⇒ Boolean
23 24 25 |
# File 'lib/simplecov_mcp/error_handler.rb', line 23 def log_errors? error_mode != :off end |
#show_stack_traces? ⇒ Boolean
27 28 29 |
# File 'lib/simplecov_mcp/error_handler.rb', line 27 def show_stack_traces? error_mode == :debug end |