fork(2) download
  1. module A
  2. def doit
  3. puts 'A doit'
  4. end
  5. end
  6.  
  7. module B
  8. def doit
  9. puts 'B doit'
  10. end
  11. end
  12.  
  13. module C
  14. def self.included(base)
  15. base.prepend(InstanceMethods)
  16. end
  17.  
  18. module InstanceMethods
  19. def doit
  20. puts 'C doit'
  21. end
  22. end
  23. end
  24.  
  25. module D
  26. def self.included(base)
  27. base.class_eval do
  28. def doit
  29. puts 'D doit'
  30. end
  31. end
  32. end
  33. end
  34.  
  35. class Foo
  36. include A
  37. end
  38.  
  39. f = Foo.new
  40.  
  41. f.doit
  42.  
  43. # Not working
  44. A.include(B)
  45. f.doit
  46.  
  47. # Not working
  48. A.include(C)
  49. f.doit
  50.  
  51. # Working
  52. A.include(D)
  53. f.doit
Success #stdin #stdout 0s 28216KB
stdin
Standard input is empty
stdout
A doit
A doit
A doit
D doit