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?