Привязка команды Ruby + Tk - проблема с областью действия?

Итак, у меня есть это приложение

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

Но если я нажимаю кнопку, я получаю «NameError: неопределенная локальная переменная или метод my_fancy_function» для # <TkButton: ... »

Я почти уверен, что мне не хватает чего-то тривиального, связанного с областью видимости ... как правильно привязать эту команду к кнопке?

Редактировать: Хорошо, если я поменяюmy_fancy_button блок для параметров, т.е.

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

Тогда это работает. Но почему?

Ответы на вопрос(1)

Ваш ответ на вопрос