http://reval-mocchi.rhcloud.com

RubyでProxyInstanceの生成

Rubyはリフレクションが簡単にできると思い,ためしにProxyInstanceを生成するクラスを作ってみた.

code

class Proxy
  def initialize obj
    (class << self; self end).class_eval do
      obj.methods.each do |method|
        define_method method do |*args|
          obj.send method,*args
        end 
      end
      obj.private_methods.each do |method|
        define_method method do |*args|
          obj.send method,*args
        end 
      end
    end
  end
end

option:enable title:proxy.rb

実行結果

proxy = Proxy.new 'string'
p proxy # => "string"
p proxy.length # => 5

option:enable style:flat-line title:result

これにより

methodをhookするのは楽そうだとわかってよかった.