instance method Object#define_singleton_method

define_singleton_method(symbol, method) -> Symbol[permalink][rdoc][edit]
define_singleton_method(symbol) { ... } -> Symbol

self に特異メソッド name を定義します。

[PARAM] symbol:
メソッド名を String または Symbol で指定します。
[PARAM] method:
ProcMethod あるいは UnboundMethod のいずれかのインスタンスを指定します。
[RETURN]
メソッド名を表す Symbol を返します。

class A
  class << self
    def class_name
      to_s
    end
  end
end
A.define_singleton_method(:who_am_i) do
  "I am: #{class_name}"
end
A.who_am_i   # ==> "I am: A"

guy = "Bob"
guy.define_singleton_method(:hello) { "#{self}: Hello there!" }
guy.hello    #=>  "Bob: Hello there!"