1#include <ruby.h> 2 3static VALUE 4begin(VALUE object) 5{ 6 return rb_funcall(object, rb_intern("try_method"), 0); 7} 8 9static VALUE 10ensure(VALUE object) 11{ 12 return rb_funcall(object, rb_intern("ensured_method"), 0); 13} 14 15static VALUE 16ensured(VALUE module, VALUE object) 17{ 18 return rb_ensure(begin, object, ensure, object); 19} 20 21void 22Init_ensured(VALUE klass) 23{ 24 rb_define_module_function(klass, "ensured", ensured, 1); 25} 26