refactor.rb (decoration plus AOP)

D

Daniel Berger

Hi all,

Courtesy of Yuki Sonoda, I stumbled across this:

http://gist.github.com/1724

Looks pretty cool to me. Decoration plus AOP!

Ara, have you already done something like this?

Just thought I'd mention it.

Regards,

Dan
 
S

Stefan Lang

2008/8/1 Daniel Berger said:
Hi all,

Courtesy of Yuki Sonoda, I stumbled across this:

http://gist.github.com/1724

Looks pretty cool to me. Decoration plus AOP!

I've written a Python-style-decorators library, too.
(Code is here: http://repo.or.cz/w/decorate.git)

Mainly because I don't like Ruby's private/protected methods.
So the library provides decorators to mark single method
definitions as private/protected/public:

require "decorate/private_method"

class Foo
private_method
def foo
...
end
end

Around/before/after methods are also possible:

require "decorate/around_decorator"

class MyObject
extend Decorate::AroundDecorator

around_decorator :log_time, :call => :log_time

def log_time(call)
t0 = Time.now
call.transfer
puts "#{call.receiver}.#{call.message}(#{call.args}) took
#{Time.now - t0} seconds"
call.result
end

log_time
def do_something(x)
sleep(rand(x))
end

end

m = MyObject.new
m.do_something(2)
m.do_something(1)

$ ruby around_example.rb
#<MyObject:0x7fa30c7c9c08>.do_something(2) took 0.998558 seconds
#<MyObject:0x7fa30c7c9c08>.do_something(1) took 1.9e-05 seconds

Stefan
 

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

No members online now.

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,234
Latest member
SkyeWeems

Latest Threads

Top