evalで式展開がうまく動かない

  def foo
    bar=1
    binding
  end

  eval "pp bar",foo
 =># 1

ってやると、ちゃんと動いてくれるのだが

  eval "pp #{bar}",foo

ってやると、

 undefined local variable or method `foo' for main:Object (NameError)

上記のような、エラーが出てしまい、式展開が出来ない模様。。。

結局ERBを使って置換してやることで解決してみた。
gsubでごりっと置換でもよいのだが、evalで評価される側のコードの正当性を
確保できなくなるのでERBを使うことにした。

require 'erb'

class Foo
  def hoge
    "hoge"
  end
  def get_binding
    binding
  end
end

foo = Foo.new
eval ERB.new("p <%= hoge %>").result(foo.get_binding)