Ruby on rails 获取对类的引用以输出调用类的元信息
我正在调试ActiveRecord模型中的一些回调。我希望有一个全局可用的方法,如下所示:Ruby on rails 获取对类的引用以输出调用类的元信息,ruby-on-rails,ruby,ruby-on-rails-3.2,metaprogramming,Ruby On Rails,Ruby,Ruby On Rails 3.2,Metaprogramming,我正在调试ActiveRecord模型中的一些回调。我希望有一个全局可用的方法,如下所示: logger.info("at end of ITEM calling check_status") 但我希望有一个可以添加到任何模型类的通用版本。我正在考虑在initializers/my_initializer.rb中使用如下方式修补ActiveRecord::Base: class ActiveRecord::Base # this worked def end_log
logger.info("at end of ITEM calling check_status")
但我希望有一个可以添加到任何模型类的通用版本。我正在考虑在initializers/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>):
我正在尝试获取调用上下文的引用-我如何才能使其工作?我认为应该是end_logself.class实际上,不需要传递klass,只需调用self.class.name来代替klass.namethx——这对名称有效,但有没有办法获取调用方法的引用以及调用函数的文件和行引用?