デバッグの際に便利な特異メソッド

ruby(と言うかrails)でコマンドラインつかってデバッグしている時、特定のオブジェクト変数の中身を書き換えたい時がある。
アクセサがあれば良いが、ない場合が殆どで困るケースが儘ある。

そこで、特異メソッドです。

class Hoge
  def initialize
    @piyo = "piyo"
  end
end

hoge = Hoge.new # hoge@piyo = "piyo"

def hoge.piyo=(new_piyo)
  @piyo = new_piyo
end

hoge.piyo = "foo" # hoge@piyo = "foo"

なんか、JavaScript のプロトタイプによるメソッドの宣言みたいだ、となんとなく思ったりもしましたがそういった物ではなく、特定のオブジェクトに対してメソッドを追加できるものです。
…やっぱりプロトタイプによるメソッドの宣言みたい。

コレを使えば一時的にオブジェクト変数を書き換えたくなってもコードを直接触ること無く書き換えられます。

便利、なのですが、コレをデバッグ以外で使えると考えるとすごく怖い。

デバッグ以外での使用は控えましょう。混乱の元です。
(10分程度考えましたが、これを使う正当な理由が見つけられませんでした)

RSS / feedly
  • follow us in feedly
  • follow us in feedly
ソーシャル
広告