Can I ask, without sounding like a *complete* idiot, what the intent
of the yield statement would be in this scenario? My understanding of
around_filter is to run some code both before and after every action.
There's already a defined sequence of events going on -- so what would
one be yielding *to* ?
For example, in a before_filter, if I want "normal processing" to
occur, I just make sure I don't return false from my filter method. I
don't have to explicitly "yield" back to keep the ball moving.
Obviously the intent here is for something more interesting - can you
say a word or two about it?
Thanks!
Jeff
(feel free to continue this on rails-talk instead, if that's more
appropriate)
Around filters are like a wrapper for your action, where 'yield' is
the action. This is one of the reasons we all love ruby, and why
rails would be really hard to implement in other languages.
If you don't yield it's just like a before filter returning false. Very handy.
AFAIK you should usually use around filters instead of before-filters
so you can clear whatever instance variables you just set (so that
they don't have the potential of leaking between requests in
production mode).
I use that idiom, and I haven't upgraded to edge rails yet.
Can I ask, without sounding like a *complete* idiot, what the intent
of the yield statement would be in this scenario? My understanding of
around_filter is to run some code both before and after every action.
There's already a defined sequence of events going on -- so what would
one be yielding *to* ?
You're yielding to that 'defined sequence of events'. it lets you do
stuff like:
ActiveRecord::Base.cache do
yield
end
(though rails does this for you now)
However I've found that it lets you make your larger before_filter /
after filters read much more nicely.
AFAIK you should usually use around filters instead of before-filters
so you can clear whatever instance variables you just set (so that
they don't have the potential of leaking between requests in
production mode).
Each request gets a new controller instance, so that's not accurate.
AFAIK you should usually use around filters instead of before-filters
so you can clear whatever instance variables you just set (so that
they don't have the potential of leaking between requests in
production mode).
Each request gets a new controller instance, so that's not accurate.