Guest User

Untitled

a guest
Jan 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. require 'active_support'
  2.  
  3. class Playmo
  4. module Callbacks
  5. def self.included(base)
  6. base.class_eval do
  7. include ActiveSupport::Callbacks
  8. alias :fire :run_callbacks
  9. end
  10. end
  11.  
  12. def method_missing(m, *args, &block)
  13. raise NoMethodError unless [:before, :after].include?(m)
  14. event = args.first
  15.  
  16. class_eval do
  17. define_callbacks(event) unless respond_to? "_#{event}_callbacks"
  18.  
  19. set_callback event, m do
  20. block.call
  21. end
  22. end
  23. end
  24. end
  25.  
  26. include Callbacks
  27.  
  28. def save
  29. before :save do
  30. puts "before_save block is called"
  31. end
  32.  
  33. after :save do
  34. puts "after_save block is called"
  35. end
  36.  
  37. fire :save do
  38. puts 'save'
  39. end
  40. end
  41. end
  42.  
  43. Playmo.new.save
Add Comment
Please, Sign In to add comment