Procでreturnするとfooから抜けちゃって関数内関数として使えません(> <)

def foo
  boo = Proc.new do
    100.times do |i|
      100.times do |j|
        if i == 50 && j == 50
          return
        end
      end
    end
  end
  boo.call
  p "foo" # 実行されず
end

foo