# Determine "owning" class?

**URL:** <https://www.ruby-forum.com/t/determine-owning-class/131411>\
**Category:** Ruby\
**Created:** [March 9, 2008, 5:00pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411 "2008-03-09T17:00:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 9, 2008, 5:00pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/1 "2008-03-09T17:00:55Z")

</div>

class A  
end

class C  
def initialize  
x = [A.new,A.new]  
end

def template  
x  
end  
end

Is it possible for an instance of A to determine the instance of C  
that instantiated it?

The application I’m working on has a class named Template that  
contains an array of Blocks. What I would like to do is have an  
instance of Block reference back to Template’s array so that it can  
search for a particular sibling block in the array. Is the structure  
built incorrectly? (It’s too late to rebuild at this time.)

Thanks,  
dvn

---

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 9, 2008, 6:11pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/2 "2008-03-09T18:11:22Z")

</div>

On Sun, 09 Mar 2008 08:58:06 -0700, dkmd\_nielsen wrote:

> end
> 
> Thanks,  
> dvn

class A  
def initialize owner  
@owner=owner  
end  
end

class C  
def initialize  
x = [A.new(self),A.new(self)]  
end

def template  
x  
end  
end

---

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 10, 2008, 11:45pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/3 "2008-03-10T23:45:42Z")

</div>

2008/3/9, dkmd\_nielsen [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> The application I’m working on has a class named Template that  
> contains an array of Blocks. What I would like to do is have an  
> instance of Block reference back to Template’s array so that it can  
> search for a particular sibling block in the array.

Where are the blocks created? If they are created inside an instance  
of the Template class, then you should be able to get at it from the  
block:

class Template  
def initialize  
@blocks = [lambda{}, lambda{}]  
end  
attr\_reader :blocks  
end

t1 = Template.new  
b = t1.blocks.first  
t2 = eval(“self”, b)  
t1 == t2 # =\> true

Regards,  
Pit

---

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 11, 2008, 5:19pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/4 "2008-03-11T17:19:45Z")

</div>

On Mon, 10 Mar 2008 17:44:41 -0500, Pit C. wrote:

> ```
> def initialize
> 
> ```
> 
> Regards,  
> Pit

A block in his question isn’t the same as a ruby syntactic block. I  
think  
he means a block of content of a web page.

–Ken

---

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 12, 2008, 2:45pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/5 "2008-03-12T14:45:39Z")

</div>

On Tue, 11 Mar 2008 13:56:49 -0500, Pit C. wrote:

> 2008/3/11, Ken B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > A block in his question isn’t the same as a ruby syntactic block. I  
> > think  
> > he means a block of content of a web page.
> 
> Ken, how do you create (quoting the OP) “an array of Blocks” with  
> syntactic blocks?

That’s what you just did, creating an array of empty lambdas.

He defined (somewhere)  
class Block  
…  
end

you instead, filled the array with objects of class Proc, which carry  
bindings and you can identify self from a Proc. You can’t do the same  
for  
Block, the way I have defined it above.

–Ken

---

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 11, 2008, 8:10pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/6 "2008-03-11T20:10:43Z")

</div>

2008/3/11, Ken B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> A block in his question isn’t the same as a ruby syntactic block. I think  
> he means a block of content of a web page.

Ken, how do you create (quoting the OP) “an array of Blocks” with  
syntactic blocks?

Regards,  
Pit

---

<div class="post-metadata">

**Author:** ![dkmd\_nielsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/958977/32.png) [@dkmd\_nielsen](https://www.ruby-forum.com/u/dkmd_nielsen)\
**Post date:** [March 12, 2008, 5:22pm UTC](https://www.ruby-forum.com/t/determine-owning-class/131411/7 "2008-03-12T17:22:13Z")

</div>

2008/3/12, Ken B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> He defined (somewhere)  
> class Block  
> …  
> end

Ah, finally I see what you mean. Yes, you could be right that the OP  
was doing something like this. Sorry, I had problems to dissociate the  
word “block” from Ruby’s blocks here on ruby-talk…

Thanks,  
Pit
