I am working on the implementation of GtkInfoBar [].
It uses GtkMessageType [].
This types are currently define under Gtk::MessageDialog.
It seems awkward to use Gtk::MessageDialog::INFO while working
with Gtk::InfoBar class.
Should I redefine the type under Gtk::InfoBar (i.e. Gtk::InfoBar::INFO)
Should we have defined the type under Gtk::Message (non existing) module
What is the more rubyish way ?

In order not to break compatibility I would go with the redifinition:
both Gtk::MessageDialog::ERROR Gtk::InfoBar::ERROR set to the same value
(ERROR of GtkMessageType enum).

I am looking at Gtk::Dialog#add_buttons in order to implement

Can someone explain me the choices made for this implementation ?

Why using gtk_dialog_add_button and not gtk_dialog_add_buttons ?
Why freezing the object during the processus ?
Why using 2 rbgtk_dialog_add_buttons_internal_* functions ?

I would like to avoid a wrong implementation for
and to understand a bit better the C code.