Há uma diferença entre ''
aspas simples e duplas ""
no Ruby em termos do que deve ser avaliado em uma string.
Inicialmente, gostaria de esclarecer que, na forma literal de uma string, qualquer coisa entre aspas simples ou duplas é avaliada como um objeto de string, que é uma instância da classe Ruby String.
Portanto, 'stackoverflow'
e "stackoverflow"
ambos avaliarão instâncias da classe String sem nenhuma diferença .
A diferença
A diferença essencial entre as duas formas literais de strings (aspas simples ou duplas) é que aspas duplas permitem seqüências de escape, enquanto aspas simples não!
Um literal de cadeia criado por aspas simples não suporta interpolação de cadeia e não escapa seqüências.
Um exemplo interessante é:
"\n" # will be interpreted as a new line
enquanto que
'\n' # will display the actual escape sequence to the user
A interpolação com aspas simples não funciona:
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
Melhor prática
Como a maioria dos Ruby Linters sugere usar literais de aspas simples para suas seqüências de caracteres e ir para os duplos no caso de seqüências de interpolação / escape.