Project

General

Profile

Feature #5505

BasicObject#__extend__

Added by Thomas Sawyer about 5 years ago. Updated about 5 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
[ruby-core:40492]

Description

Unless there is already some way to do it that I've overlooked, the it would be nice if there were still some way to extend an instance of BasicObject.

Probably the easiest way is defining #extend.

History

#1 [ruby-core:40493] Updated by Nobuyoshi Nakada about 5 years ago

Try Kernel.send(:extend_object, BasicObject.new)

#2 [ruby-core:40494] Updated by Yukihiro Matsumoto about 5 years ago

  • Status changed from Open to Rejected

o = BasicObject.new
class <<o
include Enumerable
end

should work.

#3 [ruby-core:40495] Updated by Adam Prescott about 5 years ago

On Fri, Oct 28, 2011 at 3:17 PM, Yukihiro Matsumoto matz@ruby-lang.orgwrote:

o = BasicObject.new
class <<o
include Enumerable
end

should work.

It doesn't, but this does:

o = BasicObject.new
class <<o
include ::Enumerable
end

#4 Updated by Thomas Sawyer about 5 years ago

Ah, right I forgot about this... what do you call it? The "callback"?

It needs to be:

Enumerable.send(:extend_object, BasicObject.new)

but it worked.

@matz thanks that will work too --although with a little more meta-programming if the module was in a variable.

Thanks. Sorry for the noise. Should have put the question on ruby-talk instead... but there so little communication actually going on there these days.

Also available in: Atom PDF