Hi,

In message "[ruby-talk:9001] Help: Problem with accessing C extension methods"
    on 01/01/10, Ville Mattila <mulperi / iki.fi> writes:

|I.e.
|> ruby -r foo.so -e "foo = Foo.new('bar'); foo.foo"
|-e:1: undefined method `foo' for Foo:Class (NameError)
|
|I don't understand this because
|>ruby -r foo.so -e "foo = Foo.new('bar'); p foo.instance_methods;"
|["foo"]
|
|seems to tell good things. I have probably understood something wrong?

You are returning class Foo from Foo.new here.

|VALUE foo_new(VALUE self, VALUE bar)
|{
|    rb_iv_set(self, "@foo", bar);
|    return (self);
|}

Instead, you have to remain `new' un-redefined and define `initialize'
as an instance method.

|VALUE foo_init(VALUE self, VALUE bar)
|{
|    rb_iv_set(self, "@foo", bar);
|    return (self);
|}
        :
|    rb_define_method(cFoo, "initialize", foo_init, 1);
        :

Hope this helps

							matz.