I have a module Shish(which acts like an abstract class) and a visitor class Only_Onions.
I want to instantiate Only_Onions in the module Shish so that all the classes extending Shish can use the object to deteremine if they have only__onions.
module Shish
only_onions_class = Only_Onions.new
end
class Only_Onions
def for_skewer
return true
end
end
class Skewer
include Shish
def only_onions
return only_onions_class.for_skewer
end
def veg?
return true
end
end
But I get an error "uninitialized constant Shish::Only_Onions (NameError). What does that mean?
The order of declaration has an effect. Shish doesn't know about Only_Onions in your code. If you change it to this, then Only_Onions is already declared when you define the module Shish:
class Only_Onions
def for_skewer
return true
end
end
module Shish
only_onions_class = Only_Onions.new
end
class Skewer
include Shish
def only_onions
return only_onions_class.for_skewer
end
def veg?
return true
end
end
try
::Only_Onions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With