式展開のタイミング

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)

式展開のタイミングの問題。「eval "pp #{bar}",foo」は「現時点の」barを評価しようとしているため。「pp "#{eval 'bar', foo}"」とすればよい。もちろん「pp(eval 'bar', foo)」でもok。