0.0
No commit activity in last 3 years
No release in over 3 years
Provide callbacks support for Ruby classes
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

Easy Callbacks¶ ↑

Provides callback support for Ruby classes.

Example¶ ↑

For a given class:

class SomeClass

  def some_method(some_arg)
    puts "some_method: #{some_arg}"
  end

  def before_some_method(some_arg)
    puts "before_some_method: #{some_arg}"
  end

  def around_some_method(some_arg)
    puts "around_some_method: #{some_arg}"
  end

end

EasyCallbacks.configure(SomeClass) do

  # named callback
  before :some_method, :before_some_method

  # named callback
  around :some_method, :around_some_method

  # anonymous callback
  after  :some_method do
    puts "after_some_method: #{call_args[0]}"
  end

end

This call:

SomeClass.new.some_method :some_arg

Produces this output:

before_some_method: hue
some_method: hue
around_some_method: hue
after_some_method: hue

Helper Methods¶ ↑

Inside a callback block/method, you can call three helper methods:

call_args        # returns original arguments given to the call
call_block       # returns original block given to the call
callback_details # returns details of callback execution

Callback Details¶ ↑

The ‘callback_details` helper method will return:

{
    target_class: SomeClass,
    callback_type: :around,
    target_method_name: :some_method,
    callback_method_name: :around_some_method,
    callback_block: nil,
    return_type: :success, # exclusive for `around` callbacks
    return_object: nil     # exclusive for `around` callbacks
}

Module inclusion¶ ↑

You can call ‘before`, `around` and `after` methods directly instead of calling them inside of `EasyCallbacks.configure` block. Just include `EasyCallbacks` module:

class SomeClass

  def some_method(some_arg)
    puts "some_method: #{some_arg}"
  end

  def before_some_method(some_arg)
    puts "before_some_method: #{some_arg}"
  end

  def around_some_method(some_arg)
    puts "around_some_method: #{some_arg}"
  end

  include EasyCallbacks

  before :some_method, :before_some_method

  around :some_method, :around_some_method

  after  :some_method do
    puts "after_some_method: #{call_args[0]}"
  end

end

Singleton Classes Support¶ ↑

It works too:

class SomeClass

  class << self

    def some_method(some_arg)
      puts "some_method: #{some_arg}"
    end

    def before_some_method(some_arg)
      puts "before_some_method: #{some_arg}"
    end

    def around_some_method(some_arg)
      puts "around_some_method: #{some_arg}"
    end

    include EasyCallbacks

    before :some_method, :before_some_method

    around :some_method, :around_some_method

    after  :some_method do
      puts "after_some_method: #{call_args[0]}"
    end

  end

end

SomeClass.some_method :hue

More¶ ↑

To see more of ‘EasyCallbacks` usages, please take a look at DummyClass.

¶ ↑

<img src=“https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif” alt=“Donate” />