Is there a way to cache per-request data in Rails? For a given Rails/mongrel request I have the result of a semi-expensive operation that I'd like to access several times later in that request. Is there a hash where I can store and access such data?

It needs to be fairly global and accessible from views, controllers, and libs, like Rails.cache and I18n are.

I'm ok doing some monkey-patching if that's what it takes.

  • Memcached doesn't work because it'll be shared across requests, which I don't want.
  • A global variable similarly doesn't work because different requests would share the same data, which isn't what I want.
  • Instance variables don't work because I want to access the data from inside different classes.
Edit
Report