Skip to content

Instantly share code, notes, and snippets.

@gcao
Created March 8, 2013 04:15
Show Gist options
  • Save gcao/5114180 to your computer and use it in GitHub Desktop.
Save gcao/5114180 to your computer and use it in GitHub Desktop.
Ruby 2.0 prepend question
module B
def test
puts 'before B'
super
puts 'after B'
end
end
module C
def test
puts 'before C'
super
puts 'after C'
end
end
class A
prepend B
prepend C
def test
puts 'A'
end
end
class AA
prepend B, C
def test
puts 'AA'
end
end
puts "prepend B; prepend C => #{A.ancestors}\n\n"
A.new.test
puts "\n\nprepend B, C => #{A.ancestors}\n\n"
AA.new.test
__END__
prepend B; prepend C => [C, B, A, Object, Kernel, BasicObject]
before C
before B
A
after B
after C
prepend B, C => [C, B, A, Object, Kernel, BasicObject]
before B
before C
AA
after C
after B
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment