我想所有的包装类方法用于记录一个模块,像这样:如何有一个重新定义其他类方法的类方法?
module SomeModule
def self.foo
puts "bar"
end
class << self
SomeModule.methods(false).each do |method|
alias_method "old_#{method}".to_sym, method
define_method method do |*args|
puts "Called method: #{method}"
send "old_#{method}", *args
end
end
end
end
SomeModule.foo
#-> Called method: foo
#-> bar
完美的作品。但是,如果我想只在我调用方法时才会发生包装,该怎么办?我如何才能让当你调用
module SomeModule
def self.foo
puts "bar"
end
def self.add_logging_to_all_methods
#???
end
end
SomeModule.add_logging_to_all_methods
SomeModule.foo
#-> Called method: foo
#-> bar
哦,其实我确实有这方面的工作还行......原来,我的问题是别的地方......它似乎总是这样... –