Symbol
Symbol представляет собой именованный идентификатор внутри интерпретатора Ruby. Символ записывается так - :something. Символ представляет собой особый, ограниченный вариант строки.
Другой способ взглянуть на символы - это то, что они на самом деле не текст, хотя и хорошо читаются. Вместо этого они являются уникальными идентификаторами, как числа или штрих-коды. В то время как строки представляют данные, которые могут изменяться, символы представляют уникальные значения, которые являются статическими.
И, если говорить более технически, если вы используете строки, содержащие один и тот же текст, в вашем коде несколько раз, то каждый раз будет создаваться новый строковый объект. Например, если вы выполните команду puts "Hello!" 10 раз, то будет создано 10 реальных строковых объектов (а затем они будут удалены, потому что больше не используются). С другой стороны, если вы используете для этого символ и выполните команду puts :hello` 10 раз, то будет создан и повторно использован только один объект.
"a string".object_id
=> 70358630335100
"a string".object_id
=> 70358640625960
"a string".object_id
=> 70358644379620
:a_symbol.object_id
=> 1086748
:a_symbol.object_id
=> 1086748
:a_symbol.object_id
=> 1086748