class ERB def result_hash(hash) b = binding hash.each {|k,v| eval "#{k} = %Q[#{v}]", b} result b end end puts ERB.new('<%= example %>').result_hash(:example => 'foo') ERB で引数の hash を展開して欲しい - #生存戦略 、それは - subtech これだと、値がArrayとかだったらうまくいかない。また繰り返しごとにevalするのは効率が悪い。こう書き換えたほうがいいだろう。 class ERB def result_hash(hash) b = binding eval hash.collect {|k,v| "#{k} = hash[#{k.inspect}];" }.join result b end end