This will produce the following result.
Ruby define constant in class.
6 1 reloading and stale objects.
It never looks in subclass and so it can t find a definition for the constant.
You can squeeze an orange to get juice.
Classes become more useful when you start adding instance methods instance variables to them.
All the data members in the class are between the class definition and the end keyword.
A class in ruby always starts with the keyword class followed by the name of the class.
The class customer can be displayed as class customer end you terminate a class by using the keyword end.
Ruby performs a lookup for the constant that follows a class or module keyword because it needs to know if the class or module is going to be created or reopened.
It is very important to understand that ruby does not have a way to truly reload classes and modules in memory and have that reflected everywhere they are already used.
Ruby class and module names are also constants but they are conventionally written using initial capital letters and camel case likethis.
So this is the way ruby s constant lookup algorithm works.
6 1 1 constants after the class and module keywords.
Class orange def squeeze puts here s your juice end end orange orange new orange squeeze.
A method is a thing your class can do.
Note that constants do not exist until a value is actually assigned to them.
As you can see the class object stored in the user constant is different after reloading.
When we call sub class instance foo via constant ruby searches for foo constant in myclass and its superclasses.
If the constant is not defined at that point it is not considered to be a missing constant autoloading is not triggered.
Making ruby classes more useful.
Usr bin ruby class example var1 100 var2 200 def show puts value of first constant is var1 puts value of second constant is var2 end end create objects object example new object show here var1 and var2 are constants.
Module constants all constants one argument.
So just define your constants outside methods typically we want to have constant definitions at the top of your class so they are clearly visible.
Module constants true constants of module and.
Uses the instance method.
The name should always be in initial capitals.
Same class method as in 1 8.
Your confusion is due to the fact that the class method module constants hides the instance method module constants for module.