…ersions These need to be separate lists.
I'm going to add a similar hook for use with rack.
We can't count on the ordering of a set.
This is important for apps that use HTTP content negotiation for versioning. The response version would be selected based on the Content-Type of the response (which the server might select based on the Accept request header). The request version would be selected based on the Content-Type of the request. They need to be separately selectable, hence, separate configs.
…at is instantiated multiple times.
There was a naming conflict on `interpol_config`, and both were using the sinatra app to store state. This was problematic so I pulled the state-based stuff into a separate class (w/ its own scope) so it's no longer a problem.
When an error occurs and you have particular sinatra settings, it causes the routes to be re-processed, leading to a NoMethodError because it tries to do something on `params`. This fixes it by only hijacking params for the duration of the route.
It was causing the route to be re-processed with parsed params, leading to errors.