¿Por qué String # gsub duplica el contenido?

s = "#main= 'quotes'
s.gsub "'", "\\'" # => "#main= quotes'quotes"

Esto parece estar mal, espero obtener"#main= \\'quotes\\'"

cuando no uso escape char, entonces funciona como se esperaba.

s.gsub "'", "*" # => "#main= *quotes*"

e modo que debe haber algo que ver con escapar.

Utilizando ruby 1.9.2p290

Necesito reemplazar las comillas simples con una barra diagonal inversa y una comilla.

Incluso más inconsistencias:

"\\'".length # => 2
"\\*".length # => 2

# As expected
"'".gsub("'", "\\*").length # => 2
"'a'".gsub("'", "\\*") # => "\\*a\\*" (length==5)

# WTF next:
"'".gsub("'", "\\'").length # => 0

# Doubling the content?
"'a'".gsub("'", "\\'") # => "a'a" (length==3)

¿Que esta pasando aqui

Respuestas a la pregunta(3)

Su respuesta a la pregunta