NameError when using alias_method -- but method exists?

Hello Rubyists,
I am a bit stumped here. I want to extend the 'load_file' method in the
YAML module. Following along with the PickAxe example of making old
methods do new things, I try this in irb:

module YAML
alias_method :orig_load_f, :load_file
  def load_file(*args)
    contents = orig_load_f(*args)
    contents.symbolize_keys.each_value {|v| v.symbolize_keys }

But after that last 'end', irb explodes, saying:

NameError: undefined method `load_file' for module `YAML'
        from (irb):2:in `alias_method'
        from (irb):2

But, continuing in irb:

#But apparently that NameError is not true?

?> YAML.load_file('test.yml')
=> {"node_three"=>{"a"=>1, "b"=>2, "c"=>3}, "node_one"=>{"a"=>1, "b"=>2,
, "node_two"=>{"a"=>1, "b"=>2, "c"=>3}}

Am I missing something or taking the wrong approach? Any input would be
much appreciated.



load_file is a "module method" of YAML module, not a "module instance
method". alias_method works with module instance methods (as it
seems). Try running the below code, to understand the differences

require 'yaml'
module YAML
   def load_file1(*args)
   def YAML.load_file2(*args)
module YAML
  alias_method :orig_load_f1, :load_file1
  alias_method :orig_load_f2, :load_file2