Здесь я вижу некоторые потенциальные ошибки: если вы измените порядок строк шаблона, вы можете получить другой результат; кроме того, второй шаблон может оставить строку в состоянии, которое соответствовало бы первому, только сейчас уже слишком поздно.
Предполагая, что это данность, я согласился бы с ответом Йоанна. Единственный способ, которым я могу немного улучшить это, это сделать регулярные выражения, а не строки, например:
[/abcd/,/beg[o|p]n/,/bcc/,/cdef/,/h*gxwy/].each do |pattern|
string_to_test.gsub!(pattern,'')
end
Но, конечно, если шаблоны приходят откуда-то еще, возможно, они должны быть строками.