Hi We have the occasional ApplicationController before_filter that is conditioned by the Rails.env and we like the following style: before_filter :check_for_something if Rails.env == 'production' And wish to spec this in an ApplicationController spec using an anonymous controller (e.g. http://relishapp.com/rspec/rspec-rails/docs/contro... ) *Q. Just wondering how we can Rails.stub(:env).and_return('production') to trigger the before_filter?* As it stands we have moved the conditional down into the method and stub in the before(:each) e.g. before_filter :check_for_something def check_for_something if Rails.env == 'production' ... end end before(:each) do Rails.stub(:env).and_return('production') end Cheers Shane
on 2011-08-30 01:57
on 2011-08-30 05:13
On Aug 29, 2011, at 6:09 PM, Shane Mingins wrote: > Hi > > We have the occasional ApplicationController before_filter that is conditioned by the Rails.env and we like the following style: > > before_filter :check_for_something if Rails.env == 'production' This approach won't work because this line is eval'd once and only once when the file is loaded. > > def check_for_something > if Rails.env == 'production' > ... > end > end > > before(:each) do > Rails.stub(:env).and_return('production') > end This approach works because Rails.env inside the check_for_something method is eval'd each time the method is called. HTH, David
on 2011-08-30 06:09
Yeah sorry I realised that was what was happening. But thought I'd ask the question in case there might have been something I was missing (in the docs) or a smart hack ;-)
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.