From: Eric Hodel Date: 2009-04-04T05:39:23+09:00 Subject: Re: Add a method as C extension to a class defined in Ruby On Apr 3, 2009, at 09:03, Andre Nathan wrote: > On Sat, 2009-04-04 at 00:45 +0900, Iņaki Baz Castillo wrote: >> Hi, in case I want to add a method (using C) for a class I've created >> in pure Ruby, must I also create the class in C? > > Something like this should work: > > static VALUE > rb_foo(VALUE self) > { > rb_p(INT2FIX(42)); > return Qnil; > } > > void > Init_foo(void) > { > VALUE klass = rb_const_get(rb_cObject, rb_intern("Foo")); > rb_define_method(klass, "foo", rb_foo, 0); > } It's better with RubyInline: require 'rubygems' require 'inline' class Foo inline :C do |builder| builder.c <<-C void foo() { rb_p(INT2FIX(42)); } C end end Foo.new.foo