fork download
  1. # -*- coding: utf-8 -*-
  2.  
  3. module Inertia
  4. def self.included(mod)
  5. def mod.method_added(m)
  6. return if (@__once__ ||= {})[[self, m]]
  7. @__once__[[self, m]] = true
  8. self.instance_eval do
  9. alias_method :orig_update, :update
  10. define_method(:update) do
  11. p("B")
  12. orig_update
  13. end
  14. end
  15. end
  16. end
  17. end
  18.  
  19. class Base
  20. include Inertia
  21. def update
  22. p("A")
  23. end
  24. end
  25.  
  26. Base.new.update
  27.  
Success #stdin #stdout 0.02s 7416KB
stdin
Standard input is empty
stdout
"B"
"A"