The problem is that the model object doesn't seem to be available to the callback function.
For example, in the sweeper: observe MyModel def after_create(record) expire the cache end And, in the BackgroundRB worker: MyModel.create() And when the BackgroundRB async task is started, the MyModel after_create() method is invoked as expected; however, record is nil (as is self). The record has some info in it that I use to calculate the path to expire. So, I can't call Rails.cache.delete(cache_path) when I can't determine the value of cache_path. Thanks for taking the time to help, Justin Ar Chron wrote: > Justin Britten wrote: >> I'm having some difficulty finding a way to expire the cache after >> executing an asynchronous BackgroundRB task. From a Rails controller I >> fire off an async worker which will handle importing of data from a file >> and, when completed, the fragment cache of a page needs to be expired. >> I've tried ... >> >> 1. Simply calling expire_action from within the BackgroundRB worker. >> However, it appears that BackgroundRB doesn't have access to >> ActionController. >> >> 2. Using sweepers/observers on the model object being changed by the >> BackgroundRB worker. The BackgroundRB worker will do some stuff with >> the model object, the observer will catch this, and the sweeper will >> handle expiring the cache. However, the sweeper complains that the >> record passed to the after_whatever callback methods is nil. Without >> this model object I can't expire the correct cache. >> >> Using Rails 2.1 and the absolute latest BackgroundRB from github. >> >> Any suggestions? >> >> Cheers, >> Justin > > Have you tried using Rails.cache.delete(cache_path) from the model? > > The sweepers weren't fine-grained enough for my fragment caching, and I > ended up just taking control of the cache expiration (for my app, a > single model may have, oh, 8 different fragments cached, and it may > appear in cache fragments of any number of other models -- polymorphic > relationships are cool, but have their downside -- so depending on what > changed, a model knows what caches it should expire of its own, and if > fragments of models it has a relationship with should expire also - > i.e., my name field changed and that other model's cache shows my name). -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

