La forma correcta de utilizar la interpolación de cadenas en Ruby es la siguiente:
name = "Ned Stark"
puts "Hello there, #{name}" #=> "Hello there, Ned Stark"
Esa es la forma en que tengo la intención de usarlo siempre.
Sin embargo, he notado algo extraño en la interpolación de cadenas de Ruby. He notado que la interpolación de cadenas funciona en Ruby sin las llaves en lo que respecta a las variables de instancia. Por ejemplo:
@name = "Ned Stark"
puts "Hello there, #@name" #=> "Hello there, Ned Stark"
Y que intentar lo mismo que una variable que no es de instancia no funciona.
name = "Ned Stark"
puts "Hello, there, #name" #=> "Hello there, #name"
He intentado esto con éxito tanto en 1.9.2 como en 1.8.7.
¿Por qué funciona esto? ¿Qué está haciendo el intérprete aquí?
fuente