Also, just noticed your class-caching isn't keyed off user. (I'm also
honestly not sure what @ instead of @@ means inside a self. class method;
I'd have to look that up and write specs to test it!)
Something like this may work better.
@expiry_date_cache ||= {}
@expiry_date_cache[user.id] ||= find_if_expiry_date_for(user)
(Also Rails 2.something has a memoize feature which does key off
arguments--see the Railscast. Not sure if it works for class methods).
Matt
On Thu, Apr 16, 2009 at 7:51 AM, Fernando Perez <[email protected]>wrote:
> When trying to test using sqlite in-memory in ran into a problem:
>
> - rake test raises an error on a test
> - running the failing test alone works perfectly.
>
> So what's the problem? here is the method giving the trouble:
>
> def self.expiry_date_for(user)
> @expiry_date_cache ||= find_if_expiry_date_for(user)
> end
>
> That cached method is also called by another file, and therefore sets
> the @expiry_date_cache to some value therefore not acting correctly.
>
> So is my code flawed or is it the testing framework that doesn't clear
> correctly the cached variable? In production, would my code work
> correctly?
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
--
[email protected]
617 852 5130
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users