Symbol

Symbol objects represent names and some strings inside the
Ruby interpreter. They are generated using the :name and
:"string" literals syntax, and by the various
to_sym methods. The same Symbol object will be
created for a given name or string for the duration of a program's
execution, regardless of the context or meaning of that name. Thus if
Fred is a constant in one context, a method in another, and a
class in a third, the Symbol:Fred will be the
same object in all three contexts.