col*_*rco 2 ruby monkeypatching metaprogramming
在红宝石中:
module Example
class ExampleValidator
def mymethod
# do something important
end
end
end
Run Code Online (Sandbox Code Playgroud)
是否可以使其mymethod不可变(即没有猴子修补)?
不然“冻结”全班也可以接受ExampleValidator。
是的,您可以调用freeze模块。
Example::ExampleVaildator.freeze
Run Code Online (Sandbox Code Playgroud)
但是,我会质疑为什么这是必要的。也许这是用技术问题来解决社会问题。Rubocop等工具应该对猴子补丁发出警告。