module_chain_method

Module::ChainMethod mixin to simplify method chain aliasing.

Example

require 'module/chain_method' # Module::ChainMethod

module MyMixin
  def self.included target
    super
    $stderr.puts "MyMixin.included #{target}
  end		 
  include ::Module::ChainMethod

  def foo
    puts "MyMixin#foo"
    foo_without_MyMixin
  end

  def bar
    puts "MyMixin#bar"
  end

  # Prepares method #foo for chaining.
  chain_method :foo
end

class Foo
  def foo
    puts "Foo#foo"
  end

  def bar
    puts "Foo#bar"
    super rescue nil
  end
end

f = Foo.new
f.foo
f.bar
puts

Foo.send(:include, MyMixin)
f.foo
f.bar

Generates the following output:

 > ruby -I lib example/ex01.rb
Foo#foo
Foo#bar

MyMixin.included Foo
MyMixin#foo
Foo#foo
Foo#bar
MyMixin#bar

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Kurt Stephens. See LICENSE for details.