你如何记录被调用的回调方法?

时间:2014-02-24 17:10:58

标签: ruby-on-rails ruby callback method-call

例如,如果我有这个回调:

after_create :notify_users

当调用它时,如何在我的日志文件中记录“正在调用notify_users方法”这样的内容?


我实际上在我的应用程序中有几个回调。我知道我可以在puts 'notify_users method is being called'方法中添加类似notify_users的内容,但有没有办法自动记录所有回调?

2 个答案:

答案 0 :(得分:3)

def notify_users
  logger.info "notify_users method is being called"
end

答案 1 :(得分:1)

想一想:

module Log
  def log *args
    args.each do |m|
      alias_method m.to_s + '_old', m

      define_method m do |*args|
        send(m.to_s + '_old', *args)
        puts "#{m} is called"
      end
    end
  end
end

class C
  def m1
    puts 'm1'
  end

  def m2
    puts 'm2'
  end

  extend Log

  log :m1, :m2
end

C.new.m1
C.new.m2

提供:

m1
m1 is called
m2
m2 is called