Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Ruby: rbenv-default-gemsでいつも使うgemを自動インストールする

小ネタで恐縮です。私のローカル環境では、gemコマンドで以下のgemを常にインストールしています(これらはbundlerとは別にインストールしています)。なお、dip以外のgemはVS Codeで使っています。

dip
standard
rufo
rubocop-rails-omakase
solargraph
ruby-lsp-rails

rbenvを使っているので、Rubyがリリースされたらrbenv install 3.3.4のようなコマンドを実行してRubyをアップデートすることになりますが、こうしたgemたちも再度gemコマンドで手動インストールしなければなりません。さもないとVS Codeを起動したときに「RuboCopがない」「solargraphがない」などと警告が出まくります。

しかも、今後しばらくの間は2か月に1度程度のペースでRubyがマイナーアップデートされるそうなので↓、普段遣いのgemをそのたびにインストールするのは少々とはいえ手間です。

rbenv-default-gems

そういう機能がどこかにあったはずなのに名前をすっかりド忘れしていたので、Claude 3.5 Sonnetに聞いてみると、まさに欲しかったものを教えてくれました。

rbenv/rbenv-default-gems - GitHub

インストール方法や使い方は上のリポジトリにも書いてありますが、一応ここにも書いておきます(その名の通りrbenvと連携するのが前提なので、rbenvを使っていない環境では使えません)。

git clone https://github.com/rbenv/rbenv-default-gems.git $(rbenv root)/plugins/rbenv-default-gems

後は、$(rbenv root)/default-gemをエディタで開いて、常に追加しておきたいgemを書いておくだけです。

# 例
dip               # 無指定の場合
bcat ~>0.6        # バージョンを指定する場合
rails --pre       # プレリリース版をインストールする場合

これで、今後rbenvでRubyを更新したときにgemの入れ忘れがなくなります。

$ rbenv install 3.3.4
# (省略)
==> Installed ruby-3.3.4 to /Users/hachi8833/.anyenv/envs/rbenv/versions/3.3.4
Fetching dip-8.0.0.gem
Fetching thor-1.3.1.gem
Successfully installed thor-1.3.1
Successfully installed dip-8.0.0
2 gems installed
Fetching regexp_parser-2.9.2.gem
Fetching unicode-display_width-2.5.0.gem
Fetching ast-2.4.2.gem
Fetching ruby-progressbar-1.13.0.gem
Fetching rubocop-ast-1.31.3.gem
Fetching parser-3.3.3.0.gem
Fetching rainbow-3.1.1.gem
Fetching parallel-1.25.1.gem
Fetching language_server-protocol-3.17.0.3.gem
Fetching rubocop-1.64.1.gem
Fetching rubocop-performance-1.21.1.gem
Fetching lint_roller-1.1.0.gem
Fetching standard-performance-1.4.0.gem
Fetching standard-custom-1.0.2.gem
Fetching standard-1.39.1.gem
Successfully installed ast-2.4.2
Successfully installed parser-3.3.3.0
Successfully installed rubocop-ast-1.31.3
Successfully installed unicode-display_width-2.5.0
Successfully installed ruby-progressbar-1.13.0
Successfully installed regexp_parser-2.9.2
Successfully installed rainbow-3.1.1
Successfully installed parallel-1.25.1
Successfully installed language_server-protocol-3.17.0.3
Successfully installed rubocop-1.64.1
Successfully installed rubocop-performance-1.21.1
Successfully installed lint_roller-1.1.0
Successfully installed standard-performance-1.4.0
Successfully installed standard-custom-1.0.2
Successfully installed standard-1.39.1
15 gems installed
Fetching rufo-0.18.0.gem
Successfully installed rufo-0.18.0
1 gem installed
Fetching rubocop-rails-2.25.1.gem
Fetching tzinfo-2.0.6.gem
Fetching connection_pool-2.4.1.gem
Fetching rack-3.1.6.gem
Fetching rubocop-minitest-0.35.0.gem
Fetching concurrent-ruby-1.3.3.gem
Fetching i18n-1.14.5.gem
Fetching activesupport-7.1.3.4.gem
Fetching rubocop-rails-omakase-1.0.0.gem
Successfully installed rack-3.1.6
Successfully installed concurrent-ruby-1.3.3
Successfully installed tzinfo-2.0.6
Successfully installed i18n-1.14.5
Successfully installed connection_pool-2.4.1
Successfully installed activesupport-7.1.3.4
Successfully installed rubocop-rails-2.25.1
Successfully installed rubocop-minitest-0.35.0
Successfully installed rubocop-rails-omakase-1.0.0
9 gems installed
Fetching yard-0.9.36.gem
Fetching tilt-2.4.0.gem
Fetching rbs-2.8.4.gem
Fetching kramdown-2.4.0.gem
Fetching reverse_markdown-2.1.1.gem
Fetching jaro_winkler-1.6.0.gem
Fetching kramdown-parser-gfm-1.1.0.gem
Fetching nokogiri-1.16.6-arm64-darwin.gem
Fetching diff-lcs-1.5.1.gem
Fetching e2mmap-0.1.0.gem
Fetching backport-1.2.0.gem
Fetching solargraph-0.50.0.gem
Successfully installed yard-0.9.36
Successfully installed tilt-2.4.0
Successfully installed nokogiri-1.16.6-arm64-darwin
Successfully installed reverse_markdown-2.1.1
Building native extensions. This could take a while...
Successfully installed rbs-2.8.4
Successfully installed kramdown-2.4.0
Successfully installed kramdown-parser-gfm-1.1.0
Building native extensions. This could take a while...
Successfully installed jaro_winkler-1.6.0
Successfully installed e2mmap-0.1.0
Successfully installed diff-lcs-1.5.1
Successfully installed backport-1.2.0
Successfully installed solargraph-0.50.0
12 gems installed


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。