Выражение foo = ""
никогда не будет вызовом метода. Это присвоение локальной переменной. Это факт синтаксиса Руби. Чтобы вызвать сеттер, вы должны явно указать получателя. Вот почему большинство псевдо-DSL на Ruby используют стиль Двемти:
class Dragon < Creature
life 1340 # tough scales
strength 451 # bristling veins
charisma 1020 # toothy smile
weapon 939 # fire breath
end
Это позволяет избежать проблемы знака равенства.