Ruby: include vs extend

Updated . Posted . Visible to the public.

include adds instance methods
exclude adds class methods

e.g.

module Foo
  def foo
    puts 'heyyyyoooo!'
  end
end

class Bar
  include Foo
end

Bar.new.foo # heyyyyoooo!
Bar.foo # NoMethodError: undefined method ‘foo’ for Bar:Class

class Baz
  extend Foo
end

Baz.foo # heyyyyoooo!
Baz.new.foo # NoMethodError: undefined method ‘foo’ for #<Baz:0x1e708>
padi
Last edit
padi
Posted by padi to Dev (2013-06-13 01:11)