Module: PgEventstore::Extensions::CallbacksExtension

Included in:
BasicRunner
Defined in:
lib/pg_eventstore/extensions/callbacks_extension.rb,
sig/pg_eventstore/extensions/callbacks_extension.rbs

Overview

Integrates PgEventstore::Calbacks into your object. Example usage:

class MyAwesomeClass
include CallbacksExtension
end

Now you have #define_callback public method to define callbacks outside your class' object, and you can use #callbacks private method to run callbacks inside your class' object. You can also use .has_callbacks public class method to wrap the desired method into Callbacks#run_callbacks. Example:

class MyAwesomeClass
include PgEventstore::Extensions::CallbacksExtension

def initialize(foo)
  @foo = foo
end

def do_something
  puts "I did something useful: #{@foo.inspect}!"
end
has_callbacks :something_happened, :do_something

def do_something_else
  callbacks.run_callbacks(:something_else_happened) do
    puts "I did something else!"
  end
end
end

obj = MyAwesomeClass.new(:foo)
obj.define_callback(
:something_happened, :before, proc { puts "In before callback of :something_happened." }
)
obj.define_callback(
:something_else_happened, :before, proc { puts "In before callback of :something_else_happened." }
)
obj.do_something
obj.do_something_else

Outputs:

In before callback of :something_happened.
I did something useful: :foo!
In before callback of :something_else_happened.
I did something else!

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object

Parameters:

  • klass (Object)

Returns:

  • (Object)


46
47
48
49
50
51
52
53
# File 'lib/pg_eventstore/extensions/callbacks_extension.rb', line 46

def self.included(klass)
  klass.extend(ClassMethods)
  klass.prepend(InitCallbacks)
  klass.class_eval do
    attr_reader :callbacks
    private :callbacks
  end
end

Instance Method Details

#define_callbackvoid

This method returns an undefined value.

Parameters:

  • (Object)


56
57
58
# File 'lib/pg_eventstore/extensions/callbacks_extension.rb', line 56

def define_callback(...)
  callbacks.define_callback(...)
end