Rubyに関数なんてないぞ?

は置いといて、メソッドは必ず何かのオブジェクトの持ち物だから、「メソッドの中でだけメソッドを定義し利用する」ことはできない。

Class Hoge
def foo
def bar
end
end
end

hoge=Hoge.new
hoge.bar # <= 未定義エラー
hoge.foo
hoge.bar # <= OK

で、いわゆるメソッド内スコープでサブルーチンみたいなことさせたい場合は
RubyではProcという手続きオブジェクトを作成して呼び出すのが普通

def foo
str = 'Python'
bar = Proc.new{ puts "#{str}はうんこ" }
bar.call
end

foo # <= "Pythonはうんこ"と表示
bar # <= 未定義エラー