Ruby gsub no escapa de comillas simples

No entiendo lo que está pasando aquí. ¿Cómo debo alimentar gsub para obtener la cadena “Yaho \ ‘o”?

>> "Yaho'o".gsub("Y", "\\Y") => "\\Yaho'o" >> "Yaho'o".gsub("'", "\\'") => "Yahooo" 

\ ‘significa $’ que es todo después del partido. Escape the \ again y funciona

 "Yaho'o".gsub("'", "\\\\'") 
 "Yaho'o".gsub("'", "\\\\'") 

Porque estás escapando del personaje de escape y escapando de la comilla simple.

Esto también lo hará, y es un poco más legible:

 def escape_single_quotes(str) str.gsub(/'/) { |x| "\\#{x}" } end 

Si quiere escapar tanto de una comilla simple como de una barra diagonal inversa, de modo que pueda incrustar esa cadena en una cadena de Rubyes con comillas dobles, lo siguiente lo hará por usted:

 def escape_single_quotes_and_backslash(str) str.gsub(/\\|'/) { |x| "\\#{x}" } end