Guest User

Untitled

a guest
Feb 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. class Integer
  2. def random_string
  3. (1..self).collect { (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }.join
  4. end
  5. end
  6.  
  7. class Module
  8. def wrap method, &block
  9. term = "_" + 5.random_string
  10. unless method_defined? "#{method}#{term}"
  11. alias_method "#{method}#{term}", method
  12. else
  13. return override(method, &block)
  14. end
  15. define_method(method) do |*args|
  16. begin
  17. block[*args]
  18. rescue
  19. self.send("#{method}#{term}", *args)
  20. end
  21. end
  22. public(method)
  23. end
  24. end
  25.  
  26. class File
  27. wrap(:atime) do |*args|
  28. raise "Blah" unless args[0] == 0
  29. 42
  30. end
  31.  
  32. wrap(:atime) do |*args|
  33. raise "Blah" unless args[0] == 1
  34. nil
  35. end
  36. end
  37.  
  38. File.new("a").atime # => Wed Oct 18 15:23:36 PDT 2006
  39. File.new("a").atime(0) # => 42
  40. File.new("a").atime(0) == 42 # => true
  41. File.new("a").atime(1) # => nil
  42. !File.new("a").atime(1) # => true
Add Comment
Please, Sign In to add comment