쥷Фʤ᥽åɥ֥ȤΥ饹Ǥ
Module#instance_method [Module/instance_method]  
Method#unbind [Method/unbind] ˤ
UnboundMethod#bind [UnboundMethod/bind] ˤ쥷Ф
Ƥ Method ֥Ȥ뤳ȤǤޤ

: Method 饹Ƭˤ UnboundMethod ǽ񤯤ȰʲΤ褦ˤʤ

        class Foo
          def foo() "foo" end
          def bar() "bar" end
          def baz() "baz" end
        end

        # ǤդΥȥ᥽åɤδطϥåݻƤ
        # 쥷Фξ󤬤ˤϤʤȤ
        methods = {1 => Foo.instance_method(:foo),
                   2 => Foo.instance_method(:bar),
                   3 => Foo.instance_method(:baz)}

        # ȤäƴϢ᥽åɤƤӽФ
        # 쥷ФǤ(Foo 饹Υ󥹥󥹤ǤʤФʤʤ)
        p methods[1].bind(Foo.new).call      # => "foo"
        p methods[2].bind(Foo.new).call      # => "bar"
        p methods[3].bind(Foo.new).call      # => "baz"

: ᥽åɤκ UnboundMethod ȤäƹԤˡ(̤ϡ
alias  super Ȥ)

    class Foo
      def foo
        p :foo
      end
      @@orig_foo = instance_method :foo
      def foo
        p :bar
        @@orig_foo.bind(self).call
      end
    end

    Foo.new.foo

    => :bar
       :foo