Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save oriolgual/903602 to your computer and use it in GitHub Desktop.
Save oriolgual/903602 to your computer and use it in GitHub Desktop.
module DogMixin
class << self
def included(base)
base.extend ClassMethods
end
end
module ClassMethods
def assign(*names)
@dog_names = names
end
def dog_names
if (self.ancestors-[self]).include?(Owner)
@dog_names.to_a + Owner.dog_names
else
@dog_names
end
end
end
end
class Owner
include DogMixin
assign :base_dog
end
class Nerd < Owner
assign :r2d2, :posix
end
class Emo < Owner
assign :bill, :tom
end
class Hater < Owner
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment