Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

メタプログラミングRuby | 魔術 | アラウンドエイリアス

概要

アラウンドエイリアス

内容

アラウンドエイリアスとは再定義したメソッドから以前のメソッドエイリアスとして呼び出すことです。
・元の処理の前後に処理を追加したり
・ラップした処理を作成したり
・既存機能を拡張しつつ、元のメソッドも利用可能にしたり
と便利です。
しかし、既存処理を利用箇所がある場合は影響範囲の見極めが必要。

サンプル

# encoding: utf-8
require "pp"

class Hoge
  def hoge
    "old_hoge"
  end
end

puts Hoge.new.hoge

class Hoge
  alias :old_hoge :hoge
  def hoge
    old_hoge * 5
  end
end

puts Hoge.new.hoge
puts Hoge.new.old_hoge

出力

old_hoge
old_hogeold_hogeold_hogeold_hogeold_hoge
old_hoge