Module: Tengine::Core::EventExceptionReportable
- Extended by:
- ActiveSupport::Concern
- Included in:
- Kernel
- Defined in:
- lib/tengine/core/event_exception_reportable.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- FIRE_ALL =
lambda do |kernel, dsl_context, event, exception| kernel.fire("#{event.event_type_name}.error.tengined", :properties => { :original_event => event.to_json, :error_class_name => exception.class.name, :error_message => exception., :error_backtrace => exception.backtrace, # :block_source_location => '%s:%d' % block.source_location, }) end
- FIRE_EXCEPT_TESTING_ERROR =
lambda do |kernel, dsl_context, event, exception| if exception.class.name =~ /^Test::|^MiniTest::|^RSpec::|^Spec::/ raise exception else FIRE_ALL.call(kernel, dsl_context, event, exception) end end
- RAISE_ALL =
lambda do |kernel, dsl_context, event, exception| raise exception end
- EVENT_EXCEPTION_REPORTERS =
{ :fire_all => FIRE_ALL, :raise_all => RAISE_ALL, :except_test => FIRE_EXCEPT_TESTING_ERROR, }.freeze
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.to_reporter(reporter) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/tengine/core/event_exception_reportable.rb', line 36 def to_reporter(reporter) if reporter.is_a?(Symbol) result = EVENT_EXCEPTION_REPORTERS[reporter] raise NameError, "Unknown reporter: #{reporter.inspect}" unless result result elsif reporter.respond_to?(:call) reporter else raise ArgumentError, "Invalid reporter: #{reporter.inspect}" end end |
Instance Method Details
#report_on_exception(dsl_context, event) ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/tengine/core/event_exception_reportable.rb', line 74 def report_on_exception(dsl_context, event) begin yield rescue Exception => e Tengine.logger.error("[#{e.class.name}] #{e.}\n " << e.backtrace.join("\n ")) if reporter = Tengine::Core::Kernel.event_exception_reporter reporter.call(self, dsl_context, event, e) end end end |