Also, it'd be simpler to introduce `gem_version.rb` in each component that's exactly the same for each and defines a `self.gem_version`, not `self.version`.

Then have `version.rb` in each component `require_relative './gem_version'` and alias it as `version`, except in Railties, which would define `def self.version; VERSION::STRING end`.

Then `version.rb` would never be touched by the release rake tasks, only `gem_version.rb`, and it wouldn't need any special cases.