diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index f1c3197275..69f3337764 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -8,6 +8,24 @@ assert_equal 'Ractor', %q{ Ractor.new{}.class } +# Ractor.allocate is not supported +assert_equal "[:ok, :ok]", %q{ + rs = [] + begin + Ractor.allocate + rescue => e + rs << :ok if e.message == 'allocator undefined for Ractor' + end + + begin + Ractor.new{}.dup + rescue + rs << :ok if e.message == 'allocator undefined for Ractor' + end + + rs +} + # A Ractor can have a name assert_equal 'test-name', %q{ r = Ractor.new name: 'test-name' do diff --git a/ractor.c b/ractor.c index c5bb0af5a4..292a33b3e5 100644 --- a/ractor.c +++ b/ractor.c @@ -2088,6 +2088,8 @@ void Init_Ractor(void) { rb_cRactor = rb_define_class("Ractor", rb_cObject); + rb_undef_alloc_func(rb_cRactor); + rb_eRactorError = rb_define_class_under(rb_cRactor, "Error", rb_eRuntimeError); rb_eRactorIsolationError = rb_define_class_under(rb_cRactor, "IsolationError", rb_eRactorError); rb_eRactorRemoteError = rb_define_class_under(rb_cRactor, "RemoteError", rb_eRactorError);