[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: wrapping class method

hemant

1/23/2007 8:13:00 PM

On Wed, 2007-01-24 at 04:14 +0900, Ball, Donald A Jr (Library) wrote:
> Hey guys, I'm having trouble figuring out how to wrap a class method. I
> want to add a logger.debug to ActiveRecord::Base.establish_connection,
> just trying to figure out how the rails database connection lifecycle is
> supposed to work. I tried this naive approach:
>
> module ActiveRecord
>
> class Base
>
> alias self.old_establish_connection self.establish_connection
>
> def self.establish_connection(arg)
> logger.debug("Establishing connection")
> self.old_establish_connection(arg)
> end
>
> end
>
> end
>
> of course, ruby doesn't like this, the self.old_establish_connection bit
> throws a SyntaxError. How ought I go about doing this?
>
> - donald
>

Try this:

module ActiveRecord

class Base

class << self
alias old_establish_connection establish_connection
end

def self.establish_connection(arg)
logger.debug("Establishing connection")
self.old_establish_connection(arg)
end
end
end

Another approach might be to use super like this:

module ActiveRecord
class Base
def self.establish_connection(arg)
logger.debug("Establishing connection")
super arg
end
end
end