First, `~> 10` restricts the version to 10.x. Commit d874e6c4eae8a2c2fed9fe3cd4e0987cb235bb1c changes the default to `>= 10.12` which will allow Chef 11, too. We might want to put an upper limit to the version, thought? `< 12`?

But in regards with the logic, the purpose is to make it possible to run tests (on Travis) against different Chef versions. For example `CHEF_VERSION=10.18.2 bundle exec rake`. The _.travis.yml_ in this PR tests against the latest 10.x version and the latest Chef version that matches the default restriction. The pattern is originally copied from other projects.

But the released gem should be still built without the CHEF_VERSION specified and thus using the default requirement.

This was quite useful for me when I was trying to get the tests work on both major Chef versions. In my opinion we should support both 10 and 11 for some time. If you have some other idea how to implement the same functionality, just tell. I guess it would be possible to put the logic to _Gemfile_, but would that be any better?