Test Test
Test Test

Reputation: 2899

Inheritance and modules in Ruby

I have this structure:

class1 < class2

A simple child < parent relationship.

I got a module, module1.

file CLASS_1.rb:

class1 < class2

end

file CLASS_2.rb:

class2
  include module1
end

file MODULE_1.rb:

module module1

end

why do I get this:

'<class:class2>': uninitialized constant class2::module1 (NameError)

Upvotes: 0

Views: 160

Answers (2)

sawa
sawa

Reputation: 168269

module1 has to be created by the time it is included. If you have not loaded or required MODULE_1.rb before class2 definition/creation in CLASS_2.rb, then module1 is not created at its inclusion to class2.

Upvotes: 2

Sergio Tulentsev
Sergio Tulentsev

Reputation: 230551

Class/module names should be constants (that is, begin with a capital letter).

class Class1 < Class2
  include Module1
end

And also don't forget to require corresponding files.

# class1.rb
require_relative 'class2'
require_relative 'module1'

class Class1 < Class2
  include Module1
end

Upvotes: 2

Related Questions