Я пытаюсь сделать что-то подобное, но у меня возникли проблемы с пониманием того, как использовать внутренние элементы Ruby в моем C-коде.Как создать объект Date в расширении Ruby C?
static VALUE func_get_date_object(VALUE self, VALUE vdate){
VALUE rb_date;
VALUE date;
rb_date = rb_funcall(rb_intern("Date"), rb_intern("new"), 0);;
date = rb_funcall(rb_date, rb_intern("parse"), 0);
return date;
}
То, что я хочу сделать, это пропуск в vdate в виде строки, как вы бы для Date.parse («гггг-мм-дд»)
Но сначала я думаю, что мне нужно знать, как создать или создать экземпляр нового объекта класса Date в C для Ruby. Как я могу это сделать, пожалуйста?
У меня есть тест, написанный для этого кода, который делает это.
def test_date
assert_equal('', @t.date(@t_date_str))
end
Выход
NoMethodError: undefined method `new' for 18709:Fixnum
Этот код эквивалентен 'Date.new.parse', который, вероятно, не то, что вы хотите. – tadman
Этот код не даже компиляция, так что я хочу только новый объект Date, чтобы я мог использовать его соответствующим образом. Я искал какой-то пример, но не повезло, так что даже ссылка была бы классной. –
Ну, подождите, пока она скомпилируется, но мой tes t имеет NoMethodError: undefined метод 'new 'для 18709: Fixnum –