Rack::ForceStatus
Rack::ForceStatus is a simple Rack middleware for forcing status codes on responses. This is useful for dealing with things like XDomainRequest's inability to provide responseText on errors. We can now return the error with a 200 response that XDomainRequest can receive and handle.
Installation
Install the Rack::ForceStatus gem with a simple:
gem install rack-force-status
Or add it to your Gemfile:
gem 'rack-force-status'
Usage
Use the Rack::ForceStatus middleware like anything else:
use Rack::ForceStatus
Or for Rails application, add the following line to your application config file (config/application.rb for Rails 3 & 4, config/environment.rb for Rails 2):
config.middleware.use Rack::ForceStatus
From there you can force the status on any request by passing a force_status
param, set to the value of the status you'd like. For example, if you'd like everything to always return successful, you'd do:
http://myapp.com/some/path?force_status=200
In addition to forcing the status to whatever you've specified, if the original status was different you will get a header added telling you what it was originally.
X-Original-Status-Code: 422
Options
If you'd like to customize the incoming param name or the outgoing header name, you can pass them as options.
config.middleware.use Rack::ForceStatus, :param => 'my-custom-param', :header => 'My-Custom-Header'