Skip to content

Instantly share code, notes, and snippets.

@granolocks
Last active August 29, 2015 13:56
Show Gist options
  • Select an option

  • Save granolocks/8812437 to your computer and use it in GitHub Desktop.

Select an option

Save granolocks/8812437 to your computer and use it in GitHub Desktop.
variations on class module relationships
module Mojule
def self.something
puts "something!"
end
def something_else
puts "something else!"
end
def still_something_else
puts "still something else!"
end
module_function :still_something_else
end
class Klass
include Mojule
end
class Klass2
extend Mojule
end
Mojule.something
# Mojule.something_else
# => class_module_method.rb:18:in `<main>': undefined method `something_else' for Mojule:Module (NoMethodError)
Mojule.still_something_else
Mojule::something
# Mojule::something_else
# => class_module_method.rb:23:in `<main>': undefined method `something_else' for Mojule:Module (NoMethodError)
Mojule::still_something_else
# Klass.something
# => class_module_method.rb:30:in `<main>': undefined method `something' for Klass:Class (NoMethodError)
# Klass.something_else
# => class_module_method.rb:32:in `<main>': undefined method `something_else' for Klass:Class (NoMethodError)
# Klass.still_something_else
# => class_module_method.rb:34:in `<main>': undefined method `still_something_else' for Klass:Class (NoMethodError)
# Klass.new.something
# => class_module_method.rb:37:in `<main>': undefined method `something' for #<Klass:0x00000000a2c970> (NoMethodError)
Klass.new.something_else
# Klass.new.still_something_else
# => class_module_method.rb:41:in `<main>': private method `still_something_else' called for #<Klass:0x00000002592930> (NoMethodError)
# Klass2.something
# => class_module_method.rb:45:in `<main>': undefined method `something' for Klass2:Class (NoMethodEr
Klass2.something_else
# Klass2.still_something_else
# => class_module_method.rb:48:in `<main>': private method `still_something_else' called for Klass2:Class (NoMethodError)
# Klass2.new.something
# => class_module_method.rb:50:in `<main>': undefined method `something' for #<Klass2:0x000000027409a8> (NoMethodError)
# Klass2.new.something_else
# => class_module_method.rb:52:in `<main>': undefined method `something_else' for #<Klass2:0x00000001341a60> (NoMethodError)
# Klass2.new.still_something_else
# => class_module_method.rb:54:in `<main>': undefined method `still_something_else' for #<Klass2:0x00000001268a30> (NoMethodError)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment