💎
ruby devcontainerにてClaude Code/Cidex CLIのBash toolがRVMをロードしないようにする
Microsoftが公式に提供しているRuby devcontainerイメージはClaude CodeやCodex CLIなどのAgentic Codingツールとの食い合わせが悪いという話をします。
何が問題か
Microsoftが公式に提供しているRuby devcontainerイメージにはRVMが同梱されており、RVMをロードするための設定が /etc/profile.d/rvm.sh として配置されています。ログインシェル実行時には /etc/profile.d/ 以下のファイルがロードされるため、bash -lc 実行時にはRVMがロードされてしまい、Ruby処理系がRVMによってインストールされていない旨のエラーが表示されてしまいます。
ログインシェルなしで実行
$ bash -c "ruby -v"
ruby 3.3.8 (2025-04-09 revision b200bad6cd) [aarch64-linux]
ログインシェルで実行
$ bash -lc "ruby -v"
RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,
you can ignore these warnings with 'rvm rvmrc warning ignore /workspaces/ruby-test/Gemfile'.
To ignore the warning for all files run 'rvm rvmrc warning ignore allGemfiles'.
Required ruby-3.3.6 is not installed.
To install do: 'rvm install "ruby-3.3.6"'
ruby 3.3.8 (2025-04-09 revision b200bad6cd) [aarch64-linux]
実際はバージョンマネージャなしでインストールされたRuby処理系が存在し、そちらにパスが通っています。そのためRubyは問題なく実行できるのですが、それにも関わらず処理系がインストールされていない旨の警告が表示されてしまいます。RVMがロードされてしまい、RVM管理化においてはRuby処理系がインストールされていないからです。
Claude CodeやCodex CLIなどのAgentic Codingツールは、シェルコマンド実行時に bash -lc [command] といった様にログインシェルでコマンドを実行しますので、この警告が表示されることでAgentic Codingツールに混乱を与えてしまいます。場合によっては勝手にRuby処理系をインストールしようとすることもあり、大変困ります。
対処方法
シンプルに、ログインシェルで実行される rvm.sh を削除してしまえば良いです。
# .devcontainer/Dockerfile
FROM mcr.microsoft.com/devcontainers/ruby
# Avoid autoload RVM on `bash -l`.
# for Claude Code, Codex, etc.
RUN rm /etc/profile.d/rvm.sh
Discussion