how can I find out what my current class context is?
I say:
class C ; end
C.instance_eval { def f ; "f" ; end }
C.f
#=> "f"
class D ; end
D.class_eval { def f ; "f" ; end }
D.new.f
#=> "f"
Obviously the method will be put into another context
either. I would like to be able to ask what the context is
_before_ I define the method. `self' seems to be the same in
both cases.
Sorry, it's my itch that I want to know the whole truth.
how can I find out what my current class context is?
I say:
class C ; end
C.instance_eval { def f ; "f" ; end }
C.f
#=> "f"
class D ; end
D.class_eval { def f ; "f" ; end }
D.new.f
#=> "f"
Obviously the method will be put into another context
either. I would like to be able to ask what the context is
_before_ I define the method. `self' seems to be the same in
both cases.
Sorry, it's my itch that I want to know the whole truth.
I assume you mean:
C.instance_eval { self } == C.class_eval { self }
And you are right, self is the same for both contexts. I believe the
question is the same as asking if it is possible to detect the
idioclass b/c the idioclass of the class_eval context is the
instance_eval context.
class C
class << self
# this is C.instance_eval { self }
end
# this is C.class_eval { self }
end
That being the case, see the new thread: determining when inside 'class
<< self'.