# How to monitor an Array's change?

**URL:** <https://www.ruby-forum.com/t/how-to-monitor-an-arrays-change/125563>\
**Category:** Ruby\
**Created:** [January 10, 2008, 6:23am UTC](https://www.ruby-forum.com/t/how-to-monitor-an-arrays-change/125563 "2008-01-10T06:23:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Magicloud\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Magicloud\_M](https://www.ruby-forum.com/u/Magicloud_M)\
**Post date:** [January 10, 2008, 6:23am UTC](https://www.ruby-forum.com/t/how-to-monitor-an-arrays-change/125563/1 "2008-01-10T06:23:56Z")

</div>

Hello,  
Array under .net has some event on content changing. How to do monitor  
like this in ruby?

Thanks.

---

<div class="post-metadata">

**Author:** ![Magicloud\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Magicloud\_M](https://www.ruby-forum.com/u/Magicloud_M)\
**Post date:** [January 10, 2008, 6:29am UTC](https://www.ruby-forum.com/t/how-to-monitor-an-arrays-change/125563/2 "2008-01-10T06:29:47Z")

</div>

You could proxy (via a true proxy or singletons or whatnot) for MOST  
operations.

---

<div class="post-metadata">

**Author:** ![Magicloud\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Magicloud\_M](https://www.ruby-forum.com/u/Magicloud_M)\
**Post date:** [January 11, 2008, 12:05am UTC](https://www.ruby-forum.com/t/how-to-monitor-an-arrays-change/125563/3 "2008-01-11T00:05:49Z")

</div>

Magicloud M. wrote:

> Array under .net has some event on content changing. How to do monitor  
> like this in ruby?

gem install chattr

allows you to define an array class having a type-checking  
function that contains the hook you want. You can probably  
ven replace the regular Array class with your new one. In  
any case, all the mutating methods of Array make their calls  
through the type-check block, so you have what you need.

Clifford H…

---

<div class="post-metadata">

**Author:** ![Magicloud\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e47774/32.png) [@Magicloud\_M](https://www.ruby-forum.com/u/Magicloud_M)\
**Post date:** [January 11, 2008, 8:03am UTC](https://www.ruby-forum.com/t/how-to-monitor-an-arrays-change/125563/4 "2008-01-11T08:03:06Z")

</div>

I believe you could also use trace\_var

trace\_var :$x, proc {print "The global variable $x is now ", $x, “\n”}
