Sha256: 74ccf85848a5eb17a13b43105ab16cefba38fd644d4c986c74439f4f8335c0e1

Contents?: true

Size: 687 Bytes

Versions: 8

Compression:

Stored size: 687 Bytes

Contents

module BusinessFlow
  # Fire ActiveSupport events for every step that's run and on errors
  class InstrumentedExecutor < DefaultStepExecutor
    def call
      name = flow_event_name
      payload = { flow: flow }
      ActiveSupport::Notifications.instrument(name, payload) do
        super
      end
      notify_errors(name, payload)
    end

    protected

    def notify_errors(name, payload)
      return unless flow.errors?
      ActiveSupport::Notifications.publish(name + '.error', payload)
    end

    def flow_name
      @flow_name ||= flow.class.to_s.underscore
    end

    def flow_event_name
      @flow_event_name ||= "business_flow.flow.#{flow_name}"
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
business_flow-0.11.1 lib/business_flow/instrumented_executor.rb
business_flow-0.11.0 lib/business_flow/instrumented_executor.rb
business_flow-0.10.0 lib/business_flow/instrumented_executor.rb
business_flow-0.9.1 lib/business_flow/instrumented_executor.rb
business_flow-0.9.0 lib/business_flow/instrumented_executor.rb
business_flow-0.8.2 lib/business_flow/instrumented_executor.rb
business_flow-0.8.1 lib/business_flow/instrumented_executor.rb
business_flow-0.8.0 lib/business_flow/instrumented_executor.rb