Skip to content

Instantly share code, notes, and snippets.

@deepak
Created October 26, 2015 09:04
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save deepak/aa2a7d890e6f4a17a2f1 to your computer and use it in GitHub Desktop.
include and prepend in ruby along with super
module A
def say
puts "in A"
super
end
end
module B
def say
puts "in B"
super
end
end
class Parent
def say
puts "in Parent"
end
end
class IncludeParent
def say
puts "in IncludeParent"
end
end
class PreprendParent
def say
puts "in PreprendParent"
end
end
class IncludeParent
include A, B
end
class PreprendParent
prepend A, B
end
class Temp < Parent
include A, B
end
# => IncludeParent, A, B, Object, Kernel, BasicObject
puts IncludeParent.ancestors
puts
# => A, B, PreprendParent, Object, Kernel, BasicObject
puts PreprendParent.ancestors
puts
# => Temp, A, B, Parent, Object, Kernel, BasicObject
puts Temp.ancestors
puts
IncludeParent.new.say #=> in IncludeParent
puts
#=> in A
# in B
# in PreprendParent
PreprendParent.new.say
puts
#=> in A
# in B
# in Parent
Temp.new.say
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment