class EasyCallbacks::Dsls::TargetClassesDsl

Attributes

target_class_instance[RW]

Public Class Methods

new(target_class_instance) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 10
def initialize(target_class_instance)
  self.target_class_instance = target_class_instance
end

Public Instance Methods

after(target_method_name, callback_method_name=nil, &callback_block) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 22
def after(target_method_name, callback_method_name=nil, &callback_block)
  handle_callback_definition :after, target_method_name, callback_method_name, &callback_block
end
around(target_method_name, callback_method_name=nil, &callback_block) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 18
def around(target_method_name, callback_method_name=nil, &callback_block)
  handle_callback_definition :around, target_method_name, callback_method_name, &callback_block
end
before(target_method_name, callback_method_name=nil, &callback_block) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 14
def before(target_method_name, callback_method_name=nil, &callback_block)
  handle_callback_definition :before, target_method_name, callback_method_name, &callback_block
end

Protected Instance Methods

decorate_method(target_method_name) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 37
def decorate_method(target_method_name)
  tci = target_class_instance
  MethodDecorator.decorate target_class_instance.target_class, target_method_name do
    EasyCallbacks.execute_callbacks self, tci, :before, target_method_name, nil, call_args, &call_block

    result = error = nil
    begin
      result = call_original
    rescue => e
      error = e
    end

    additional_options = error ?
      { return_type: :error, return_object: error } :
      { return_type: :success, return_object: result }

    EasyCallbacks.execute_callbacks self, tci, :around, target_method_name, additional_options, call_args, &call_block

    raise error if error

    EasyCallbacks.execute_callbacks self, tci, :after, target_method_name, nil, call_args, &call_block

    result
  end
end
handle_callback_definition(callback_type, target_method_name, callback_method_name, &callback_block) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 28
def handle_callback_definition(callback_type, target_method_name, callback_method_name, &callback_block)
  push_callback callback_type, target_method_name, callback_method_name, &callback_block
  decorate_method target_method_name
end
push_callback(callback_type, target_method_name, callback_method_name, &callback_block) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 33
def push_callback(callback_type, target_method_name, callback_method_name, &callback_block)
  target_class_instance.add_callback callback_type, target_method_name, callback_method_name, &callback_block
end
target_class_instance=(target_class_instance) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 63
def target_class_instance=(target_class_instance)
  validate_target_class_instance target_class_instance
  @target_class_instance = target_class_instance
end
validate_target_class_instance(target_class_instance) click to toggle source
# File lib/easy_callbacks/dsls/target_classes_dsl.rb, line 68
def validate_target_class_instance(target_class_instance)
  Utils::Validator.validate_instance_type! :target_class_instance,
                                          target_class_instance,
                                          Models::TargetClass
end