A maneira adequada de usar interpolação de string em Ruby é a seguinte:
name = "Ned Stark"
puts "Hello there, #{name}" #=> "Hello there, Ned Stark"
É assim que pretendo sempre usar.
No entanto, notei algo estranho na interpolação de strings de Ruby. Percebi que a interpolação de strings funciona em Ruby sem as chaves em relação às variáveis de instância. Por exemplo:
@name = "Ned Stark"
puts "Hello there, #@name" #=> "Hello there, Ned Stark"
E tentar fazer o mesmo que uma variável que não seja de instância não funciona.
name = "Ned Stark"
puts "Hello, there, #name" #=> "Hello there, #name"
Eu tentei isso com sucesso em 1.9.2 e 1.8.7.
Por que isso funciona? O que o intérprete está fazendo aqui?
fonte