rbenvで新しいバージョンのrubyをインストールした時

rbenvで新しいバージョンのrubyをインストールした時の注意点

rbenvで新しいバージョンのrubyをインストールすると[rails]コマンドが使えなくなる。
これは、インストールした新しいバージョンのrubyの中に以下のようにrailsが入っていないからである

higmonta@higuchimiyukiyuunoMacBook-Pro bin % pwd     
/Users/higmonta/.rbenv/versions/2.6.3/bin
higmonta@higuchimiyukiyuunoMacBook-Pro bin % ls
bundle  bundler erb gem irb rake    rdoc    ri  ruby

アプリケーションができている場合は、下記のようにアプリケーションのディレクトリ上でbundlerをインストールして、bundlerをインストールするとbundleコマンドが使えるようになるので、bundle installをすることにより、Gemfile.lockに記載のrailsがインストールされ、新しくインストールしたrubyのバージョンに下記のようにrailsが入る

higmonta@higuchimiyukiyuunoMacBook-Pro rspec_app_exam % gem install bundler:2.1.4
higmonta@higuchimiyukiyuunoMacBook-Pro rspec_app_exam % bundle 
higmonta@higuchimiyukiyuunoMacBook-Pro bin % ls
bundle          pry         ruby-rewrite
bundler         puma            sass
byebug          pumactl         sass-convert
coderay         rackup          scss
erb         rails           spring
erubis          rails_best_practices    sprockets
faker           rake            thor
gem         rdoc            tilt
htmldiff        ri          yard
irb         rspec           yardoc
ldiff           rubocop         yri
listen          ruby
nokogiri        ruby-parse

※ポイント
新しいrubyのバージョンをインストールすると、そのrubyのバージョンにはrailsが入っていないので[gem install bundler]をして[bundler]Gemをインストールした後に[rails]Gemをインストール(bundle install)するか、[~/.rbenv/versions/(rubyのバージョン)/bin]にrailsをインストールしないといけない(前者は、bundle install時にGemのインストール先を指定しなければvendorフォルダにGemがインストールされてアプリケーションにGemがインストールされる、後者はPCにGemがインストールされる感じ)
対象のアプリケーションフォルダで[bundle install]すると基本的にvendorフォルダにgemがインストールされる。(rails もこのフォルダの中にインストールされる)
[bundle install]する時に[-path]オプションでgemをインストールする場所を指定できる
vendorフォルダの中(このアプリケーションの中)にrailsがインストールされるので、[~/.rbenv/versions/(rubyのバージョン)/bin]の中にはrailsが入ってこない
vendorフォルダの中にrailsがインストールされている時は、[bundle exec rails s]のようにしないと[rails]コマンドが使えない
[bundle exec]は、現在いるディレクトリのアプリケーションにインストールされているGemfilelockのバージョンで使うコマンド
gemをvendorフォルダの中にインストールしない時は、[~/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0(x.x.0)/gems]にインストールしている

参考記事:

「rbenv: rails: command not found」の対処法 - Qiita

いまさらながら bundle exec ってなんだっけ? | Bamboo Silo

rbenv: rails: command not found - Qiita