29 May '12, 2pm

Интроспекция цепочки вызова методов ActiveRecord::Base

Недавно захотелось разобраться, какие методы вызываются при вызове конкретного метода отнаследованного от ActiveRecord::Base класса. Поэтому я придумал небольшой хак для вывода названия метода при его вызове: module ActiveRecord Base.singleton_methods.each do |m| Base.class_eval <<-EOS class << self puts "redefining #{m}" define_method "#{m}_with_introspection" do |*args| puts "#{m}" send(:"#{m}_without_introspection", *args) end alias_method :"#{m}_without_introspection", :"#{m}" alias_method :"#{m}", :"#{m}_with_introspection" end EOS end end https://gist.github.com/2828416 Можно подключить этот код через какой-нибудь init.rb/environment.rb файл, чтобы он загружался при старте проекта или можно просто запускать его руками из irb сессии. Вот пример использования в irb: https://gist.github.com/2828602 NB: Можно применять этот хак не только для класса ActiveRecord::Base, но...

Full article: http://rubyflow.ru/items/1304

Tweets

Wondering if there's something higher-level tha...

apidock.com 28 May '12, 5pm

Welcome Register Projects Help About Blog APIdock release: IRON STEVE (1.4) If you have any comments, ideas or feedback, f...