На самом деле это "особенность" Ruby:
def value=(x)
p x
end
def run
value = 123
end
run
# => 123
В приведенном выше #run выполнение значения назначает локальную переменную, а не что-либо еще. Если вы хотите вызвать # value =, вы должны указать получателя:
def run
self.value = 123
end
run
123
# => nil
Надеюсь, это поможет!