Issue #7782 has been updated by matz (Yukihiro Matsumoto).

Status changed from Open to Closed

"allocator" in the error message does not mean #allocate method, but internal C function (thus TypeError not NoMethodError).
We haven't provide the way to check if a class can be allocated, except for actually allocating an object.
I don't think we need to prepare the way to check explicitly.

Matz.

----------------------------------------
Bug #7782: Struct both has and does not have an allocator
https://bugs.ruby-lang.org/issues/7782#change-35839

Author: trans (Thomas Sawyer)
Status: Closed
Priority: Normal
Assignee: 
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]


=begin
One the one hand:

    >> Struct.allocate
    TypeError: allocator undefined for Struct
        from (irb):1:in `allocate'
        from (irb):1
        from /opt/Ruby/1.9.3-p327/bin/irb:12:in `<main>'

But on the other:

    >> Struct.method(:allocate)
    => #<Method: Class#allocate>

In my current case, I need a reliable way to check if a class can be allocated or not. How can one do this if the method is remains present even when it can not be used?
=end



-- 
http://bugs.ruby-lang.org/