Ligação de comando Ruby + Tk - problema de escopo?

Então eu tenho esse aplicativo

require 'tk'
class Foo
  def my_fancy_function
    puts "hello, world!"
  end

  def initialize
    @root = TkRoot.new{title "Hello, world!"}
    frame = TkFrame.new
    my_fancy_button = TkButton.new(frame) do
      text "Press meee"
      command {my_fancy_function}
      pack
    end
    frame.pack
    Tk.mainloop
  end
end

bar = Foo.new

Mas se eu pressionar o botão, eu recebo "NameError: variável local indefinida ou o método` my_fancy_function 'para # <TkButton: ... "

Tenho certeza que estou faltando algo trivial relacionado ao escopo ... como eu ligar esse comando para o botão corretamente?

Edit: Ok, se eu mudar meumy_fancy_button bloco aos parâmetros, ou seja,

my_fancy_button = TkButton.new(frame, :text => "Press meee", :command => proc{my_fancy_function}).pack

Então funciona. Mas por que?

questionAnswers(1)

yourAnswerToTheQuestion