# Application design advice

**URL:** <https://www.ruby-forum.com/t/application-design-advice/64560>\
**Category:** Ruby\
**Created:** [August 9, 2006, 11:14pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560 "2006-08-09T23:14:33Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [August 9, 2006, 11:14pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560/1 "2006-08-09T23:14:33Z")

</div>

I’m using the Eventmachine framework and being fairly new to ruby am  
wondering about the best way to structure my code. Being an event  
based framework there is a lot of jumping around in the code from one  
callback to another.

In particular, most of the methods that I call to set callbacks take a  
block. The code I want to run is usually going to be a method within  
a class. For instance:

c = Transaction.new  
ProtocolHandler.setcallback {|args| c.Process)

This seems to be the easiest way to get the callback to run my method  
and pass it the arguments I need. Is there a better way to do this or  
am I on the right track?

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [August 9, 2006, 11:17pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560/2 "2006-08-09T23:17:33Z")

</div>

> c = Transaction.new  
> ProtocolHandler.setcallback {|args| c.Process)

Oops, that should be…

ProtocolHandler.setcallback {|args| c.Process(args)}

Which brings up another question. How would I write a similar block  
to handle multiple arguments where the number of arguments isn’t known  
when I call setcallback?

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [August 9, 2006, 11:23pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560/3 "2006-08-09T23:23:33Z")

</div>

On Thu, 10 Aug 2006, snacktime wrote:

> 

ProtocolHandler.setcallback {|\*args| c.Process(\*args)}

-a

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [August 9, 2006, 11:26pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560/4 "2006-08-09T23:26:34Z")

</div>

snacktime wrote:

> > c = Transaction.new  
> > ProtocolHandler.setcallback {|args| c.Process)
> 
> Oops, that should be…
> 
> ProtocolHandler.setcallback {|args| c.Process(args)}
> 
> Which brings up another question. How would I write a similar block  
> to handle multiple arguments where the number of arguments isn’t known  
> when I call setcallback?

With the ‘splat’ operator:

ProtocolHandler.setcallback {|\*args| c.Process(\*args)}

-Justin

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [August 9, 2006, 11:35pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560/5 "2006-08-09T23:35:35Z")

</div>

> ProtocolHandler.setcallback {|\*args| c.Process(\*args)}

Of course it would be that easy… Thanks!

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [August 15, 2006, 2:12pm UTC](https://www.ruby-forum.com/t/application-design-advice/64560/6 "2006-08-15T14:12:21Z")

</div>

snacktime wrote:

> c = Transaction.new  
> ProtocolHandler.setcallback {|args| c.Process)

Just a question: why is #Process capitalized?

Cheers,  
Daniel
