获取对类的引用以输出调用类的元信息

时间:2014-07-27 13:56:04

标签: ruby-on-rails ruby ruby-on-rails-3.2 metaprogramming

我正在调试ActiveRecord模型中的一些回调。我想拥有一个全球可用的方法,如下所示:

logger.info("at end of ITEM calling check_status")

但是我希望有一个可以添加到任何模型类的通用版本。我正在考虑在初始化器/ my_initializer.rb中修改像ActiveRecord :: Base一样的猴子:

class ActiveRecord::Base
  # this worked
  def end_log_proof
    logger.info("this should work")
  end


  def end_log(klass)
    logger.info("at end of ( #{klass.name} )")
    logger.info("calling #{klass.__method__}.upcase at file #{klass.__FILE__} line: #{klass.__LINE__}")
  end
end

如果我这样打电话:

class Item < ActiveRecord::Base
  after_save :my_callback

  def my_callback
    end_log_proof # this works
    end_log(self) # ouptuts : "calling MY_CALLBACK at ...."
  end  

第二个失败了:

NoMethodError (undefined method `name' for #<Item:0x007feab6359e38>):

我正在尝试获取对调用上下文的引用 - 我如何使这个工作起作用?

THX

0 个答案:

没有答案