module Animals
def mammals
["sloths", "puppies", "porcupines"]
end
end
# - - - - - - - - include
class Zoo
include Animals
end
zoo = Zoo.new
zoo.mammals # => ["sloths", "puppies", "porcupines"]
zoo.methods - Object.methods # => mammals
# - - - - - - - - extend
class PetStore
extend Animals
end
PetStore.mammals # => ["sloths", "puppies", "porcupines"]
pet_store = PetStore.new
pet_store.mammals # => undefined method `mammals' for #<PetStore:0x007f858a919f30> (NoMethodError)
PetStore.methods - Object.methods # => mammals
pet_store = PetStore.new
pet_store.methods - Object.methods # =>
module Animals
extend self
def mammals
["sloths", "puppies", "porcupines"]
end
def sea_creatures
["narwhal", "starfish", "dolphin"]
end
end
Animals.mammals # => ["sloths", "puppies", "porcupines"]
Animals.sea_creatures # => ["narwhal", "starfish", "dolphin"]
# - - - - - - - - include
class Zoo
include Animals
end
Zoo.mammals # => undefined method `mammals' for Zoo:Class (NoMethodError)
zoo = Zoo.new
zoo.mammals # => ["sloths", "puppies", "porcupines"]
# - - - - - - - - extend
class PetStore
extend Animals
end
PetStore.mammals # => ["sloths", "puppies", "porcupines"]
pet_store = PetStore.new
pet_store.mammals # => undefined method `mammals' for #<PetStore:0x007f858a919f30> (NoMethodError)
module Animals
def self.mammals
["sloths", "puppies", "porcupines"]
end
def sea_creatures
["narwhal", "starfish", "dolphin"]
end
end
Animals.mammals # => ["sloths", "puppies", "porcupines"]
Animals.sea_creatures # => undefined method
# - - - - - - - - include
class Zoo
include Animals
end
Zoo.mammals # => undefined method
Zoo.sea_creatures # => undefined method
zoo = Zoo.new
zoo.mammals # => undefined method
zoo.sea_creatures # => ["narwhal", "starfish", "dolphin"]
# - - - - - - - - extend
class PetStore
extend Animals
end
PetStore.mammals # => undefined method
PetStore.sea_creatures # => ["narwhal", "starfish", "dolphin"]
pet_store = PetStore.new
pet_store.mammals # => undefined method
pet_store.sea_creatures # => undefined method