Объяснение кода Ruby для построения структур данных Trie

Итак, у меня есть этот код ruby, который я взял из википедии и немного изменил:

@trie = Hash.new()
def build(str)
    node = @trie
    str.each_char { |ch|
      cur = ch
      prev_node = node
      node = node[cur]
      if node == nil
        prev_node[cur] = Hash.new()
        node = prev_node[cur]
      end
    }
  end

build('dogs')

puts @trie.inspect

Я сначала запустил это на консоли IRB, и каждый раз, когда я выводитьnode, он просто продолжает давать мне пустой хэш каждый раз{}, но когда я на самом деле вызвать эту функцию построить с параметром'dogs' строка, это на самом деле работает, и выводит{"d"=>{"o"=>{"g"=>{"s"=>{}}}}}, что совершенно правильно.

Вероятно, это скорее вопрос Ruby, чем реальный вопрос о том, как работает алгоритм. Я действительно не обладаю достаточными знаниями Ruby, чтобы понять, что там происходит.