ruby aliasの使い方

gold対策(模擬試験12)。
この手の問題も間違った気がする。
 

alias式

aliasは式なので、識別子、symbolが利用できます。
 

下記出力となるようにaliasの内容を回答させる問題。
メソッド名が引っ掛けですが、先に指定するのが新しいメソッド名です。

Hello, World
Hello, Ruby World

識別子指定の場合。

def method
  puts 'Hello, World'
end

alias old_method method
def method
  old_method
  puts 'Hello, Ruby World'
end
method

Symbol指定の場合。

def method
  puts 'Hello, World'
end

alias :old_method :method
def method
  old_method
  puts 'Hello, Ruby World'
end
method

文字列を指定するとエラーになります。

alias_ng_string.rb:5: syntax error, unexpected tSTRING_BEG
alias 'old_method' 'method'
       ^

本筋から離れますが、tSTRING_BEG ってなんでしょう?聞き慣れないですね。
ググると、parse.y が引っかかるので、その筋の定義のようです。
第10章 パーサ
 
 

alias_method

こちらもundefと一緒で引数に指定できるのは、Symbolと文字列です。 aliasとの違いはグローバル変数の別名をつけることはできないことだそうです。 new_methodという名前で別名を付ける例。 Symbol指定の場合。

class C
  def method
    puts 'Hello, World'
  end

  alias_method :new_method, :method
  def new_method
    method
    puts 'Hello, Ruby World'
  end
end
C.new.new_method
# >> Hello, World
# >> Hello, Ruby World

文字列指定の場合。

class C
  def method
    puts 'Hello, World'
  end

  alias_method 'new_method', 'method'
  def new_method
    method
    puts 'Hello, Ruby World'
  end
end
C.new.new_method
# >> Hello, World
# >> Hello, Ruby World