# Hijack, or alias a method with a proc?

**URL:** <https://www.ruby-forum.com/t/hijack-or-alias-a-method-with-a-proc/104505>\
**Category:** Ruby\
**Created:** [May 18, 2007, 7:56pm UTC](https://www.ruby-forum.com/t/hijack-or-alias-a-method-with-a-proc/104505 "2007-05-18T19:56:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ac91a4/32.png) [@jim](https://www.ruby-forum.com/u/jim)\
**Post date:** [May 18, 2007, 7:56pm UTC](https://www.ruby-forum.com/t/hijack-or-alias-a-method-with-a-proc/104505/1 "2007-05-18T19:56:00Z")

</div>

Hello,

I have a Menu class with a add\_item method, which takes a name  
followed by a proc:

Menu(“TopLevelMenuName”).add\_item(“NewMenuItemName”) { puts “Hello” }

I want to hijack this method so I can customize the menu in which the  
proc is associated.

Class Menu  
alias :\_add\_item :add\_item  
def add\_item( \*args )  
p args  
end  
end

This captures the menuname string, but how do I get at the associated  
proc?

Thanks.

---

<div class="post-metadata">

**Author:** ![jim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ac91a4/32.png) [@jim](https://www.ruby-forum.com/u/jim)\
**Post date:** [May 18, 2007, 8:16pm UTC](https://www.ruby-forum.com/t/hijack-or-alias-a-method-with-a-proc/104505/2 "2007-05-18T20:16:02Z")

</div>

Jim wrote:

> Class Menu  
> alias :\_add\_item :add\_item  
> def add\_item( \*args )

```
def add_item( *args , &block )

```

> ```
> p args
> 
> ```

```
  p args, block
  _add_item(*args, &block)
```

---

<div class="post-metadata">

**Author:** ![jim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/ac91a4/32.png) [@jim](https://www.ruby-forum.com/u/jim)\
**Post date:** [May 20, 2007, 6:40am UTC](https://www.ruby-forum.com/t/hijack-or-alias-a-method-with-a-proc/104505/3 "2007-05-20T06:40:55Z")

</div>

Thanks Joel, I was certain it could be done. I appreciate your time  
and knowledge.  
On May 18, 2:14 pm, Joel VanderWerf [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
