インストール直後はロードできない

Rubyスクリプト内でGemをインストールして直後にロードしようとしてもLoadErrorになる。

sh "gem", "install", "--no-document", "bundler"
require "bundler"
# => in `require': cannot load such file -- minitest (LoadError)

読み込みパスをクリアするとロードできるようになる

Gem.clear_pathsで読み込みパスをクリアするとロードできるようになる。

begin
  require "bundler"
rescue LoadError
  sh "gem", "install", "--no-document", "bundler"
  Gem.clear_paths
  retry
end

バージョンを指定することもできる

gemメソッドを使用すればバージョンも指定してロードできる。

begin
  gem "bundler", "2.4.5"
rescue Gem:::MissingSpecError
  sh "gem", "install", "--no-document", "bundler", "-v", "2.4.5"
  Gem.clear_paths
  retry
end