From: "trans (Thomas Sawyer)" Date: 2013-02-18T03:46:31+09:00 Subject: [ruby-core:52394] [ruby-trunk - Bug #7216] object.c defines clone method for objects that cannot be cloned. Issue #7216 has been updated by trans (Thomas Sawyer). This is true for class method #allocate too. ---------------------------------------- Bug #7216: object.c defines clone method for objects that cannot be cloned. https://bugs.ruby-lang.org/issues/7216#change-36449 Author: therevmj (Michael Johnson) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: core Target version: 2.0.0 ruby -v: all versions up to current trunk As the subject says, in object.c, the clone method is defined and then special cased for certain object types. The end result is that all respond_to?(:clone) returns true for all objects, but then thows an fatal error in some cases. Here is an appropriate example: >> a = true => true >> a.respond_to?(:clone) => true >> a.clone TypeError: can't clone TrueClass from (irb):3:in `clone' from (irb):3 Ultimately, the objects that do no respond to 'clone' should have it removed so that the respond_to? method returns false. -- http://bugs.ruby-lang.org/