rubyのメソッドの解釈する順番が分からないです

hoge("huga")

def hoge(text)
puts text
end

上のようにメソッド定義前にメソッドを呼び出すとダメだよね?

でも

class SelfTest
def fuga
hoge("success!!")
end

def hoge(text)
puts text
end
end

test = SelfTest.new
test.fuga

これだとうまくいくのはなんでなの?