方法1
singleton_classを使う
class MyClass
def self.my_method
'MyClass.my_method'
end
end
module MyModule
refine MyClass.singleton_class do
def my_method
'Myclass.my_method in MyModule'
end
end
end
using MyModule
puts MyClass.my_method # Myclass.my_method in MyModule
方法2
selfを使わずクラスメソッドを定義
class MyClass
def self.my_method
'MyClass.my_method'
end
end
module MyModule
refine MyClass do
def MyClass.my_method
'Myclass.my_method in MyModule'
end
end
end
using MyModule
puts MyClass.my_method # Myclass.my_method in MyModule
もしくは
class MyClass
def self.my_method
'MyClass.my_method'
end
end
module MyModule
refine MyClass do
class << MyClass
def my_method
'Myclass.my_method in MyModule'
end
end
end
end
using MyModule
puts MyClass.my_method # Myclass.my_method in MyModule
selfの場合
うまく呼び出すことができない
class MyClass
def self.my_method
'MyClass.my_method'
end
end
module MyModule
refine MyClass do
def self.my_method
'Myclass.my_method in MyModule'
end
end
end
using MyModule
puts MyClass.my_method # 'MyClass.my_method'