Sha256: a072acb619ce59fb5ee595065091d7deb5a1d4a9fcf0dfc85d9da0403a507acf
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
# error_enhancements.rb module ErrorEnhancements def message original_message = begin super() rescue '' end vars_message = variables_message rescue "" if original_message.include?(vars_message) original_message else "#{original_message}\n#{vars_message}" end rescue => e original_message || '' end def variables_message @variables_message ||= begin if @binding_infos&.any? bindings_of_interest = select_binding_infos(@binding_infos) EnhancedErrors.format(bindings_of_interest) else '' end rescue '' end end private def select_binding_infos(binding_infos) # Preference: # 1. First 'raise' binding that isn't from a library (gem). # 2. If none, the first binding. # 3. The last 'rescue' binding if available. bindings_of_interest = [] first_app_raise = binding_infos.find do |info| info[:capture_event] == 'raise' && !info[:library] end bindings_of_interest << first_app_raise if first_app_raise if bindings_of_interest.empty? && binding_infos.first bindings_of_interest << binding_infos.first end last_rescue = binding_infos.reverse.find do |info| info[:capture_event] == 'rescue' end bindings_of_interest << last_rescue if last_rescue bindings_of_interest end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
enhanced_errors-1.0.0 | lib/error_enhancements.rb |