Rails constant assignment

64 Views Asked by At

I'm reading rails autoloading_and_reloading_constants. In the section 2.2 Class and Module Definitions are Constant Assignments

I understood the part where it says

class Project < ApplicationRecord
end 

evaluates to

Project = Class.new(ApplicationRecord)

but failed to understand this part

Thus, when one informally says "the String class", that really means: the class object stored in the constant called "String" in the class object stored in the Object constant. String is otherwise an ordinary Ruby constant and everything related to constants such as resolution algorithms applies to it.

Can someone briefly explain it?

1

There are 1 best solutions below

4
mrzasa On

It means more or less:

  • every class is an object (as evetything in Ruby), its class is Class
  • class objects are assigned to constants, e.g. String or User
  • String as a language construct is just a constant, nothing else, it happen to have attached a class object describing textual data
  • everything that relates to loading constants relates to loading classes attached to those constants