Does no one have thoughts on this? :( 
Is this the intended behavior? Would love some feedback. 

On Saturday, 11 May 2013 04:17:02 UTC+2, Rob Gleeson wrote:
>
> ActionController::Caching::Sweeper depends on a controller when trying to 
> expire actions, pages
> or fragments but it also invokes itself in contexts where a controller is 
> not initialized. In those contexts,
> such as a rails console session, it chooses to return nil in 
> method_missing and more or less fail
> silently. If you assumed the cache is bust you'd be wrong.
>
> This is a common problem people run into, because you'd assume it'd "just 
> work". One solution I found
> was particularly scary:
>
> ActionController::Base.new.expire_action "…"
>
> in place of letting the Sweeper delegate for you people are actually 
> trying to re-implement the default
> behavior of the Sweeper because it is being invoked in contexts that it 
> doesn't try to account for. I decided
> to avoid the problem head on and use an Observer with 
> Rails.cache.delete(…) instead, which works without
> a controller (and at the cost of some abstraction, but still better). Once 
> you write 
> ActionController::Base.new.expire_action "…" you are re-implementing the 
> logic of the sweeper, and avoiding
> its lookup logic. Something feels wrong if you have to do this. It might 
> be the wrong solution to the problem
> but it's also the solution found in the official rails guides.
>
> The sweeper feels broken, its behavior for handling a case where it cannot 
> bust/expire the cache is to silently
> fail, and it invokes it self in contexts where it will definitely fail. 
> The silent failure feels like a band aid, and as a
> API that people use to implement caching it's obviously confusing. Its 
> promoted as a solution, but really if people
> are doing this its better to use an observer & Rails.cache.delete(…) until 
> the Sweeper gets fixed.
> What do you guys think? This has annoyed me for a while but finally got 
> around to posting about it.
>
> Robert
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to