I agree, and I only put requires at the bottom in exceptional situations. This is one of those. Constraints to the problem space:

* The old constants should be available everywhere the new ones are, because people have been using them without requiring. We could just say "this is a breaking change, deal with it," but then it's pointless to deprecate.
* The files that setup the deprecation warnings reference the new constants in the class definition, so those constants must be defined when the file is evaluated.
* For sanity reasons, I'd like every file to be requirable without prerequisite requires whenever possible.
* I'd rather not depend on implementation details of how ruby handles circular requires.

Given the above, I think putting the requires at the bottom is the way to go. The only time someone needs to look at this is is they're unclear on how the deprecated constant stuff is loaded; these files don't define code that is used in the file.