Adding code/Extending methods after they have been written?

M

Marc Heiler

Hi there,

Let's say i have 10 methods. Each one looks like so:

def p(some_input)
print some_input
# do some more stuff...
end

Some months after I wrote this, I realized that I need to
handle blocks given to these methods. (Need is the wrong
word, a better word would be i *want to* because
Ruby allows you to)

I do it like so currently:

if block_given?
yield
some_mandatory_finalizer_method
end

The thing actually is... The last 4 lines of code look
like repetitive boilerplate code to me. The way I solved it
was by copy pasting this segment into each method, but
it kinda does not feel clean. (I have even put these
four lines of code into one line, so that I have
an easier time to remove this code if i can think of a
cleaner solution)

Does anyone else of you know of a way to add "code rules"
to some methods? Something like this would be cool:

def add_boilerplate_code
if block_given?
yield
some_mandatory_finalizer_method # this is always the same method
end
end

METHODS_THAT_NEED_TO_BE_EXTENDED = %w( p q r s t u v w x y z )
METHODS_THAT_NEED_TO_BE_EXTENDED.each do |my_method|
my_method.add_boilerplate_code
end


Thankful for any tips!
 
S

Stefan Lang

Does anyone else of you know of a way to add "code rules"
to some methods? Something like this would be cool:

Looks like a good use case for Aspect oriented programming.
AOP frameworks provide mechanisms to do exactly that.
There are (at least) two AOP frameworks on RubyForge:
aspectr and aquarium.

Otherwise it's fairly easy to create such a facility
from scratch via alias_method.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,023
Latest member
websitedesig25

Latest Threads

Top