Aspectr and rails


#1

Has anybody successfully used AspectR with Rails?

I would like to profile some parts of my Rails app such as accesses to
DB, helper methods, and rendering of views. I’d like to do this in the
live production version of the site and I’d like to turn this
monitoring on and off at run-time.

I know I could instrument all of these methods manually and collect the
data I want, but ideally I’d like to make no changes to the actual
application.

So I tried using AspectR for this and it works for some methods, but
most of the methods return this error:

#<NoMethodError: You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.[]>

in this method (part of aspectr) when it tries to access
@__aop_advice_methods:

  def __aop_advice_list(joinpoint, method)
	method = method.to_s
	unless (method_hash = @__aop_advice_methods[joinpoint])
  			method_hash = @__aop_advice_methods[joinpoint] = {}
	end
	unless (advice_list = method_hash[method])
  		advice_list =  method_hash[method] = []
	end
	advice_list
  end

It seems like @__aop_advice_methods disappears or something.

Anybody has an idea how to fix this?

Or a different way how to do the monitoring I described above?

Thanks,
Peter


#2

AspectR is pretty old now and doesn’t appear to be actively
maintained. It may not be compatible with more recent versions of
Ruby. You might look at RCR 321:
http://www.rcrchive.net/rcr/show/321", although if I recall
correctly, it is proposing language changes. Still, it might give you
ideas for doing your monitoring using existing Ruby techniques.

dean

On 3/17/06, Peter B. removed_email_address@domain.invalid wrote:

  def __aop_advice_list(joinpoint, method)

It seems like @__aop_advice_methods disappears or something.

Anybody has an idea how to fix this?

Or a different way how to do the monitoring I described above?

Thanks,
Peter


Dean W.
http://www.aspectprogramming.com
http://www.newaspects.com
http://www.contract4j.org