Hay una diferencia entre ''
comillas simples y dobles ""
en Ruby en términos de lo que se evalúa en una cadena.
Inicialmente, me gustaría aclarar que, en la forma literal de una cadena, lo que sea que esté entre comillas simples o dobles se evalúa como un objeto de cadena, que es una instancia de la clase Ruby String.
Por lo tanto, 'stackoverflow'
y "stackoverflow"
ambos evaluarán las instancias de la clase String sin ninguna diferencia .
La diferencia
¡La diferencia esencial entre las dos formas literales de cadenas (comillas simples o dobles) es que las comillas dobles permiten secuencias de escape, mientras que las comillas simples no lo hacen!
Un literal de cadena creado por comillas simples no admite la interpollación de cadena y no escapa a las secuencias.
Un buen ejemplo es:
"\n" # will be interpreted as a new line
mientras
'\n' # will display the actual escape sequence to the user
La interpolación con comillas simples no funciona en absoluto:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
Mejores prácticas
Como la mayoría de los Ruby Linters sugieren usar literales de comillas simples para sus cadenas e ir a los dobles en el caso de secuencias de interpolación / escape.