rspec-rails (2.7.0) rails (3.0.10)
post: Rails 3.1 Error Catching is irrelevant for me.
Code:
class ApplicationController < ActionController::Base
unless Rails.application.config.consider_all_requests_local
rescue_from ActiveRecord::RecordNotFound, :with => :render_404
rescue_from Exception, :with => :render_500
rescue_from FunnyException, :with => :my_errors
def my_errors(exception)
#some stuff for production
puts "=======From top====#{Rails.application.config.consider_all_requests_local}"
end
else
rescue_from FunnyException, :with => :my_errors
def my_errors(exception)
#some stuff for development
puts "=====From bottom======#{Rails.application.config.consider_all_requests_local}"
end
end
end
This code perfectly works with production/development… problem is when I wanna test it with rspec. How to switch test case between environments?
I tried adding something like:
before do
Rails.application.config.consider_all_requests_local = true
end
I get:
…=====From bottom======true .=====From bottom======true .=====From
bottom======true .=====From bottom======true
so tried
before do
Rails.application.config.consider_all_requests_local = false
end
so I get:
…=====From bottom======false .=====From bottom======false .=====From
bottom======false .=====From bottom======false
How is that even possible? … same with changing spec_helper
config.before(:each) do
Rails.application.config.consider_all_requests_local = false
end
unless is not working. Top section is unreachable with rspec… always hits Bottom why ? I assume it is somehow tied now with Rack… but is there any solution to dynamically change this behavior inside rspec?
regards
Ok I found quite easy solution
It is part of anonymous application controller test suite.
You have to add after block… because this change will persist through other suites.
Any improvements welcome 😀
edit: Using spork and guard causes for me sometimes random errors… before :all seems to solve that problem