Berasal dari: Jay and Why , yang juga memberikan cara untuk membuat ini lebih cantik.
self.create_class_method(method_name)
(class << self; self; end).instance_eval do
define_method method_name do
...
end
end
end
Pembaruan : dari kontribusi VR di bawah ini; metode yang lebih ringkas (selama Anda hanya mendefinisikan satu metode dengan cara ini) yang masih berdiri sendiri:
self.create_class_method(method_name)
(class << self; self; end).send(:define_method, method_name) do
...
end
end
tetapi perhatikan bahwa menggunakan send () untuk mengakses metode privat seperti define_method () belum tentu merupakan ide yang baik (pemahaman saya adalah bahwa ini akan hilang di Ruby 1.9).
singleton_class.define_method