いくつかののRailsアプリケーションを触っていると、アプリケーションによってGemfileにRubyのバージョンが書かれていたり書かれていなくて不思議でした。
Rails 5.2からはbin/rails newしたときに、作成するGemfileにRubyのバージョンを記載するようになりました。
つまり、GemfileにRubyのバージョンが書かれていないのは、そのアプリケーションがRails 5.1 以前のバージョンで作られたからでした。
GemfileにRubyのバージョンが書かれるようになったのはHerokuで自動的に環境を作成するさいに、Rubyのバージョンを決定するためのようです。 .ruby-versionの方は、rbenv/rvmでRubyのバージョンを決定するためのようです。
重複しているのはどうなの?と思いますが
https://github.com/rails/rails/pull/30016#issuecomment-321400071
I think we've crossed wires here a bit. Given that I originally requested this feature, perhaps I was unclear with the rational. I'm fine with the fact that the version is duplicated between .ruby-version and Gemfile. Just as long as they're set by default.
If at some point rbenv learns to read the version from a Gemfile, then we can drop the .ruby-version. But until that I'd like that to stay.
rbenvがGemfileからRubyのバージョンを読み取ってくれないので、両方使っているそうです。