Class: ServiceObjects::Listener

Inherits:
Object
  • Object
show all
Defined in:
lib/service_objects/listener.rb

Overview

The base class for service listeners

Examples:

Decorates an object

object = Object.new

listener = ServiceObjects::Listener.new object
listener.send :object
# => object

Calls #otherwise in case no method has been checked

class MyListener < ServiceObjects::Listener
  def on_success
    "success"
  end

  def otherwise
    "nothing"
  end
end

listener = MyListener.new
listener.finalize
# => "nothing"

Calls #otherwise in case an undefined method has been checked


listener = MyListener.new
listener.respond_to? :on_error
# => false

listener.finalize
# => "nothing"

Skips #otherwise in case a defined method has been checked


listener = MyListener.new
listener.respond_to? :on_success
# => true

listener.finalize
# => nil

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(*args, &block) ⇒ Object (private)



106
107
108
# File 'lib/service_objects/listener.rb', line 106

def method_missing(*args, &block)
  object.send(*args, &block)
end

Class Method Details

.initialize(object) ⇒ ServiceObjects::Listener

Listener object constructor

Decorates given object by adding methods to be called by service objects

Examples:

Decorates an object

object = Object.new

listener = ServiceObjects::Listener.new object
listener.send :object
# => object

Parameters:

  • object (Object)

Returns:



32
33
34
# File 'lib/service_objects/listener.rb', line 32

def initialize(object)
  @object = object
end

Instance Method Details

#finalizeself

Calls #otherwise in case no existing method has been checked

Examples:

Calls #otherwise in case no method has been checked

class MyListener < ServiceObjects::Listener
  def on_success
    "success"
  end

  def otherwise
    "nothing"
  end
end

listener = MyListener.new
listener.finalize
# => "nothing"

Calls #otherwise in case an undefined method has been checked


listener = MyListener.new
listener.respond_to? :on_error
# => false

listener.finalize
# => "nothing"

Skips #otherwise in case a defined method has been checked


listener = MyListener.new
listener.respond_to? :on_success
# => true

listener.finalize
# => nil

Returns:

  • (self)


80
81
82
83
84
# File 'lib/service_objects/listener.rb', line 80

def finalize
  otherwise unless @notified

  self
end

#new(object) ⇒ ServiceObjects::Listener

Listener object constructor

Decorates given object by adding methods to be called by service objects

Examples:

Decorates an object

object = Object.new

listener = ServiceObjects::Listener.new object
listener.send :object
# => object

Parameters:

  • object (Object)

Returns:



32
33
34
# File 'lib/service_objects/listener.rb', line 32

def initialize(object)
  @object = object
end

#otherwiseundefined

This method is abstract.

The method called by #finalize when no other method has been checked

Returns:

  • (undefined)


41
42
# File 'lib/service_objects/listener.rb', line 41

def otherwise
end

#respond_to?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Checks whether the method is defined

Remembers the fact that any defined method has been checked

Returns:

  • (Boolean)


93
94
95
# File 'lib/service_objects/listener.rb', line 93

def respond_to?(*)
  super ? (@notified = true) : false
end

#respond_to_missing?(*args) ⇒ Boolean

Returns:

  • (Boolean)


98
99
100
# File 'lib/service_objects/listener.rb', line 98

def respond_to_missing?(*args)
  object.respond_to?(*args)
end