alias_method_chain
alias_method_chain(target, feature)NOTE: This method is deprecated. Please use Module#prepend that comes with Ruby 2.0 or newer instead.
Encapsulates the common pattern of:
alias_method :foo_without_feature, :foo alias_method :foo, :foo_with_feature
With this, you simply do:
alias_method_chain :foo, :feature
And both aliases are set up for you.
Query and bang methods (foo?, foo!) keep the same punctuation:
alias_method_chain :foo?, :feature
is equivalent to
alias_method :foo_without_feature?, :foo? alias_method :foo?, :foo_with_feature?
so you can safely chain foo, foo?, foo! and/or foo= with the same feature.
2Notes
Always pass a block
I highly recommend always taking a block and passing it back up the chain if you use alias_method_chain, even if the original method does not. Otherwise you're keeping anyone later in the chain from adding support for blocks.
http://tech.hickorywind.org/articles/2008/08/29/always-pass-a-block-when-using-alias_method_chain
Deprecated
This method is now at ActiveSupport::CoreExtensions::Module#alias_method_chain