Memoization on freeze


#1

Hey alI,

I like the new support for memoizable methods in Rails 2.2. However,
I’m running into a problem that’s making it hard to use in my case.

My ActiveRecord model has a method that does a lot of data crunching,
and it takes a few seconds. I used ActiveSupport::Memoizable and
memoized that long-running method, which made my code quite clean
since I can call it willy-nilly from all over my view. Very nice.

The problem happens when I call #destroy on the model. I didn’t know
much about freezing AR objects, so I was surprised when I found out
that #destroy called #freeze, and #freeze called #memoize_all. This
calls my long-running method, sadly, which is about the last thing I
want to happen when destroying my object!

My work-around was to call ModelClass.delete(id), but that’s kinda
lame given that it doesn’t go through the normal callback cycle - it
will surely bite me on the ass someday.

Any other workaround to this problem I don’t see? Besides, of course,
rolling my own memoization?

Thanks!
Mike


#2

Hey Mike,

That looks a valid issue/bug. I’ve pinged Josh about it as he is the
guy in charge of memoization code.

Thanks!

On Sat, Dec 6, 2008 at 9:00 PM, Mike G. removed_email_address@domain.invalid
wrote:

Any other workaround to this problem I don’t see? Besides, of course,
rolling my own memoization?

Thanks!
Mike


Cheers!