Этот фрагмент определяет Виртуальный атрибут (или метод "setter"), так что "express_token" выглядит как атрибут, даже если это просто имя метода.Например:
class Foo
def foo=(x)
puts "OK: x=#{x}"
end
end
f = Foo.new
f.foo = 123 # => 123
# OK: x=123
Обратите внимание, что у объекта "f" нет атрибута или переменной экземпляра с именем "foo" (и при этом он не нужен), поэтому метод "foo =" является просто синтаксическим сахаром для разрешениявызов метода, который выглядит как присваивание.Также обратите внимание, что такие методы установки всегда возвращают свой аргумент независимо от оператора return
или конечного значения.
Если вы определяете метод установки верхнего уровня, например, в«irb», то поведение может быть немного запутанным из-за неявного добавления методов к классу Object.Например:
def bar=(y)
puts "OK: y=#{y}"
end
bar = 123 # => 123, sets the variable "bar".
bar # => 123
Object.new.bar = 123 # => 123, calls our method
# OK: y=123
Object.public_methods.grep /bar/ # => ["bar="]