Ruby C API を使用してモジュール内にクラスを定義しようとしています。ただし、これがネット全体で行われているのを見た方法は、私にはうまくいかないようです。具体的には、最上位モジュールが作成されますが、モジュール内でクラスが見つかりません。ここに私のCファイルがあります:
#include <ruby.h>
static VALUE mTree;
static VALUE cNode;
VALUE hello_world(VALUE klass)
{
return rb_str_new2("hello world");
}
void Init_tree()
{
mTree = rb_define_module("Tree");
cNode = rb_define_class_under(mTree, "Node", rb_cObject);
rb_define_method(cNode, "hello_world", hello_world, 0);
}
ここに私のextconf.rbがあります:
require 'mkmf'
create_makefile('tree')
これが私のテストスクリプトです:
require 'tree'
puts Tree # => Tree
puts Tree::Node # => uninitialized constant Tree::Node (NameError)
誰でも助けることができますか?