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.

> 
> And wish to spec this in an ApplicationController spec using an anonymous 
> controller (e.g. 
> http://relishapp.com/rspec/rspec-rails/docs/controller-specs/anonymous-controller)
> 
> 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

This approach works because Rails.env inside the check_for_something method is 
eval'd each time the method is called.

HTH,
David
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to