Все в руби является обьектом абсолютно все, даже класс является обьектом класса Class =)
Для каждого из типов обьектов определено очень много упрощающих жизнь методов.
есть методы трех типов
# первый
# если на конце стоит ?, то метод возвращает true или false
# в данном случае вернет true так как переменная var не определена и является обьектом класса nil
var.nil?
# второй
# если на конце стоит !, то метод изменяет значение обьекта на котором вызван
arr = [1, 2, 3, 1, 4, 2]
arr.uniq! # удаляет повторяющиеся элементы
p arr # выведет [1, 2, 3, 4]
# третий
# на конце не стоит ничего
arr = [1, 2, 3, 1, 4, 2]
p arr.uniq # выведет [1, 2, 3, 4]
p arr # выведет [1, 2, 3, 1, 4, 2]