Roxy: Rubyでプロキシオブジェクト
http://ryandaigle.com/articles/2008/11/10/implement-ruby-proxy-objects-with-roxy
本家では「両親が離婚しているか」をモデリングしている。
離婚しているか?は両親のpropertyだから、person.parents_divorced?ではなくて person.parents.divorced? と書けるべきという考えだからか。
っつーかあのサンプルをそのまま実行しても動かないから実験しづらいんだけど……
# -*- coding: euc-jp -*- require 'rubygems' require 'roxy' class Dog def bark() "ワンワン" end def walk() "歩く" end end class ProxyTan include Roxy::Moxie attr_accessor :pet proxy :hoge do def fuga() 1 end # !> undefining `object_id' may cause serious problem end proxy :pet do def walk() "二足歩行犬" end end end p = ProxyTan.new dog = Dog.new dog.bark # => "ワンワン" # !> `&' interpreted as argument prefix dog.walk # => "歩く" p.pet = dog p.hoge # => nil p.hoge.fuga # => 1 p.pet # => #<Dog:0xa6644c8> p.pet.bark # => "ワンワン" p.pet.walk # => "二足歩行犬"
要するにproxyを介したときに特異メソッドをくっつけるようなやつか?
warningが不気味に光ってる。
Ruby 1.9でも動く。