原です。

できました、、、けどよくわからん。

   str = "f = \"'f = \\\"' + f.gsub(/[\\\\\\\\\\\"]/){\\\"\\\\\\\\\\\" + $&} + '\\\";' + f\";'f = \"' + f.gsub(/[\\\\\"]/){\"\\\\\" + $&} + '\";' + f"
   p str == eval(str) #=> true


str の作り方:
   f = "'f = \"' + f.gsub(/[\\\\\"]/){\"\\\\\" + $&} + '\";' + f"
   str = eval(f)
   p str == eval(str) #=> true