Thank you, Torimus - pointed me in the right direction. Apparently it helps if you read the documentation, specifically that of Gtk.events_pending?
! Added the following after setting button.sensitive
to force the main loop to do its thing:
while Gtk.events_pending? do
Gtk.main_iteration
end