Я пытаюсь определить класс внутри модуля с API Ruby C. Однако, как я видел, что это сделано по всей сети, похоже, не работает для меня. В частности, модуль верхнего уровня создается, но класс не может быть найден внутри модуля. Вот мой C файл:Определение классов в модулях с API Ruby 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)
Может кто-нибудь помочь?
Какая версия Ruby, вы работаете? Я использую ruby 1.9.3dev (2011-09-23 версия 33323) [x86_64-darwin11.0.0]. – user2398029
Работал и для меня. Я на Ruby 1.9.2-p0. – Brandan
@louism ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] –