Rails内で使うRakeタスクに以下のようなものを使おうとしました。

namespace :task1 do
  task :do_something => :environment do
    foo
  end
  def foo
    p "task1"
  end
end

namespace :task2 do
  task :do_something => :environment do
    foo
  end
  def foo
    p "task2"
  end
end

namespaceで区切られているためfooメソッドは別のものとして解釈されると思っていたのですがオーバーライドされてしまいました。

特定のRakeタスク内からしか呼び出さないメソッドのスコープを限定するにはどうすればよいのでしょうか?

特に決まった方法がないのであればtask1_fooなどのような命名規則を適用させようと考えています。