文字列の中の(や+などをすべてリテラル( 『\(』や『\+』など )にするメソッドとかありますか?

正規表現で処理する場合に、その中に含まれるある文字列を
単純な文字列のマッチとして扱いたいのですが、
含まれている文字に偶にメタ文字が含まれている場合があるので、
素直に 
Regexp.new(a+b+c)
とできないので。

a="abc(^"
b="DEF+?G)H" #ランダムで変わる
c=")defgh

d=Regexp.new(a+b+c)

の様な感じで、bの中のメタ文字を\でリテラルにしたいのです。