Sha256: 71f41e2d6cc3b9ab873d1b9555a4e1d8e3b5a224fcef7ca306856e972fef84e4

Contents?: true

Size: 1.48 KB

Versions: 4

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require_relative 'events/publisher'

module Esse
  # Extension used for classes that can pub/sub events
  #
  # Examples:
  #
  #   # Publish an event
  #   Esse::Events.publish('elasticsearch.create_index', { definition: {index_name: 'my_index'} })
  #   # Subscribe to an event
  #   Esse::Events.subscribe('elasticsearch.create_index') do |event|
  #     puts event.payload
  #   end
  #
  #   # Publish an event using instrumentation
  #   Esse::Events.instrument('elasticsearch.create_index') do |payload|
  #     payload[:definition] = {index_name: 'my_index'}
  #     # Some slow action
  #   end
  #   Esse::Events.subscribe('elasticsearch.create_index') do |event|
  #     puts event.payload[:runtime] # Extra information about the amount of time the action took
  #   end
  #
  #   # Attach a listener to the event bus
  #   class MyEventListener
  #     def on_elasticsearch_create_index(event)
  #       puts event.payload
  #     end
  #   end
  #   listener = MyEventListener.new
  #   Esse::Events.attach(listener)
  #   # Dettash the listener
  #   Esse::Events.detach(listener)
  #
  #
  module Events
    include Publisher

    register_event 'elasticsearch.close'
    register_event 'elasticsearch.open'
    register_event 'elasticsearch.create_index'
    register_event 'elasticsearch.delete_index'
    register_event 'elasticsearch.update_mapping'
    register_event 'elasticsearch.update_settings'
    register_event 'elasticsearch.update_aliases'
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
esse-0.2.0 lib/esse/events.rb
esse-0.1.3 lib/esse/events.rb
esse-0.1.2 lib/esse/events.rb
esse-0.1.1 lib/esse/events.rb