Попробуйте следующий код:
<code>s = '#value#'
puts s.gsub('#value#', Regexp.escape('*')) # => '\*'
puts s.gsub('#value#', Regexp.escape('+')) # => ''
Wtf? Похоже, что символ '\ +' (возвращаемый Regexp.escape) полностью игнорируется gsub. Как это исправить?