gitignore `.ruby-version` & `bin/`

The bin directory may contain bundler binstubs for development
Test against Faraday 0.7.x on CI
Enable coverage & quality test only with default Gemfile

Speeds up CI build for non-standard Gemfiles
Test with Ruby 2.1.1 on CI
Show all failing tests
Improve mashify/rashify specs

The specs used to be isolated from the `call(env)` cycle by means of
using the `on_complete` method directly. Since that method is not
considered part of the public API of Faraday::Response::Middleware, this
switches away from using that method and makes the middleware process
responses the standard way, via `call()`.

This gets rid of the need for "integration tests" because the middleware
is exercised exactly as it would during a real request/response cycle.
Tolerate 98.9% code coverage

Coverage dropped slightly below 99% because in caching middleware there
is a code path that is only effective during parallelism, but it's not
trivial to setup parallel requests to exercise that scenario.
Enable RackCompatible specs on Rubinius

It used to be that those failed because of a Rubinius bug
https://github.com/rubinius/rubinius/issues/1522

But it's been 2 years since then, so assume that it's fixed.
Mark compatible with Faraday 0.9
Add `.rb` extension to alternate Gemfiles

This way text editors will recognize them as Ruby scripts
Add Env compatibility layer to specs for Faraday 0.9

Ensures that middleware in tests receives a proper Faraday::Env instance
for Faraday 0.9, and a plain Hash for Faraday <= 0.8.
Monkeypatch to support `request: { preserve_raw: true }`

Faraday 0.9 doesn't support custom keys in RequestOptions. However, a
faraday_middleware feature allowed people to set this option with
earlier versions of Faraday.

For now, a monkeypatch is necessary to retain this compatibility.
Work around Faraday 0.9 query parsing incompatibility in OAuth2

The query string 'access_token&q=hello` gets parsed with the token value
`nil` in Faraday 0.8, but with value `true` in Faraday 0.9.

This is most likely a regression in Faraday, but for now, simply check
if an OAuth token quacks like a string before trying to treat it as one.
Make RackCompatible middleware compatible with Faraday 0.9

We can't reuse the same `env` hash between Rack and Faraday since
Faraday 0.9 operates with Faraday::Env object.

Solve this by maintaining two distinct `env` objects; one for Rack and
another for Faraday.
Update middleware registry for Faraday 0.9

The unified method `Faraday.register_middleware` for registering all
kinds of middleware was gone in 0.9.

https://github.com/lostisland/faraday/commit/14b458a9c971897f44d5ee3ba5354de52c998e72
Merge pull request #88 from lostisland/faraday-0.9

Faraday 0.9 compatibility
Support milliseconds in parse_dates middleware

Closes #72