I have rvm installed on my MacBook where I am developing a Ruby on Rails app that is in a Docker Compose environment. I want VSCode’s ruby-lsp extension to use the installation of ruby in my container and NOT my rvm installation. The main reason here is that if a ruby version or gem version changes in the Docker container but not on my MacOS, then it breaks ruby-lsp.
I have ruby-lsp installed via my Gemfile.
This is the output from ruby-lsp extension in VSCode:
<code>2024-05-10 15:03:48.953 [info] (cms) Checking if chruby is available on the path with command: /bin/bash -i -c 'chruby --version'
2024-05-10 15:03:49.085 [info] (cms) Checking if rbenv is available on the path with command: /bin/bash -i -c 'rbenv --version'
2024-05-10 15:03:49.200 [info] (cms) Checking if rvm is available on the path with command: /bin/bash -i -c 'rvm --version'
2024-05-10 15:03:49.445 [info] (cms) Discovered version manager rvm
2024-05-10 15:03:49.641 [info] (cms) Activated Ruby environment: NVM_INC=/Users/daerlt/.nvm/versions/node/v20.2.0/include/node MANPATH=/opt/homebrew/share/man: VSCODE_CRASH_REPORTER_PROCESS_TYPE=extensionHost rvm_bin_path=/Users/daerlt/.rvm/bin GEM_HOME=/Users/daerlt/.rvm/gems/ruby-3.2.2 SHELL=/bin/bash HISTSIZE=1000000 HOMEBREW_REPOSITORY=/opt/homebrew IRBRC=/Users/daerlt/.rvm/rubies/ruby-3.2.2/.irbrc TMPDIR=/var/folders/1s/q0gv32zd39l8cgpr7bw748zh0000gp/T/ MallocNanoZone=0 ORIGINAL_XDG_CURRENT_DESKTOP=undefined MY_RUBY_HOME=/Users/daerlt/.rvm/rubies/ruby-3.2.2 HISTFILESIZE=1000000 NVM_DIR=/Users/daerlt/.nvm USER=daerlt COMMAND_MODE=unix2003 rvm_path=/Users/daerlt/.rvm SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.ZjqvUOBPjt/Listeners __CF_USER_TEXT_ENCODING=0x1F6:0x0:0x0 VSCODE_AMD_ENTRYPOINT=vs/workbench/api/node/extensionHostProcess ELECTRON_RUN_AS_NODE=1 rvm_prefix=/Users/daerlt PATH=/Users/daerlt/.rvm/gems/ruby-3.2.2/bin:/Users/daerlt/.rvm/gems/ruby-3.2.2@global/bin:/Users/daerlt/.rvm/rubies/ruby-3.2.2/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/daerlt/.nvm/versions/node/v20.2.0/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/daerlt/.rvm/bin __CFBundleIdentifier=com.microsoft.VSCode PWD=/Users/daerlt/Whitney/code/topgoose/cms VSCODE_HANDLES_UNCAUGHT_ERRORS=true EDITOR=nano XPC_FLAGS=0x0 XPC_SERVICE_NAME=application.com.microsoft.VSCode.161897059.161897065 rvm_version=1.29.12 (latest) rvm_pretty_print_flag=auto HOME=/Users/daerlt SHLVL=2 APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL=1 VSCODE_NLS_CONFIG={"locale":"en-us","osLocale":"en-us","availableLanguages":{},"_languagePackSupport":true} HOMEBREW_PREFIX=/opt/homebrew LOGNAME=daerlt GEM_PATH=/Users/daerlt/.rvm/gems/ruby-3.2.2:/Users/daerlt/.rvm/gems/ruby-3.2.2@global VSCODE_CODE_CACHE_PATH=/Users/daerlt/Library/Application Support/Code/CachedData/dc96b837cf6bb4af9cd736aa3af08cf8279f7685 VSCODE_IPC_HOOK=/Users/daerlt/Library/Application Support/Code/1.89-main.sock NVM_BIN=/Users/daerlt/.nvm/versions/node/v20.2.0/bin VSCODE_PID=77525 HOMEBREW_CELLAR=/opt/homebrew/Cellar INFOPATH=/opt/homebrew/share/info: rvm_delete_flag=0 RUBY_VERSION=ruby-3.2.2 VSCODE_CWD=/
2024-05-10 15:03:49.851 [info] (cms) ruby: warning: Ruby was built without YJIT support. You may need to install rustc to build Ruby with YJIT.
2024-05-10 15:03:50.232 [info] (cms) Ruby LSP> Running bundle install for the custom bundle. This may take a while...
Ruby LSP> Command: (bundle check || bundle install) 1>&2
2024-05-10 15:03:50.244 [info] (cms) ruby: warning: Ruby was built without YJIT support. You may need to install rustc to build Ruby with YJIT.
2024-05-10 15:03:50.362 [info] (cms) Your Ruby version is 3.2.2, but your Gemfile specified ~> 3.3
2024-05-10 15:03:51.019 [info] (cms) /Users/daerlt/.rvm/rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/definition.rb:426:in `validate_ruby!': Your Ruby version is 3.2.2, but your Gemfile specified ~> 3.3 (Bundler::RubyVersionMismatch)
from /Users/daerlt/.rvm/rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/definition.rb:401:in `validate_runtime!'
<code>2024-05-10 15:03:48.953 [info] (cms) Checking if chruby is available on the path with command: /bin/bash -i -c 'chruby --version'
2024-05-10 15:03:49.085 [info] (cms) Checking if rbenv is available on the path with command: /bin/bash -i -c 'rbenv --version'
2024-05-10 15:03:49.200 [info] (cms) Checking if rvm is available on the path with command: /bin/bash -i -c 'rvm --version'
2024-05-10 15:03:49.445 [info] (cms) Discovered version manager rvm
2024-05-10 15:03:49.641 [info] (cms) Activated Ruby environment: NVM_INC=/Users/daerlt/.nvm/versions/node/v20.2.0/include/node MANPATH=/opt/homebrew/share/man: VSCODE_CRASH_REPORTER_PROCESS_TYPE=extensionHost rvm_bin_path=/Users/daerlt/.rvm/bin GEM_HOME=/Users/daerlt/.rvm/gems/ruby-3.2.2 SHELL=/bin/bash HISTSIZE=1000000 HOMEBREW_REPOSITORY=/opt/homebrew IRBRC=/Users/daerlt/.rvm/rubies/ruby-3.2.2/.irbrc TMPDIR=/var/folders/1s/q0gv32zd39l8cgpr7bw748zh0000gp/T/ MallocNanoZone=0 ORIGINAL_XDG_CURRENT_DESKTOP=undefined MY_RUBY_HOME=/Users/daerlt/.rvm/rubies/ruby-3.2.2 HISTFILESIZE=1000000 NVM_DIR=/Users/daerlt/.nvm USER=daerlt COMMAND_MODE=unix2003 rvm_path=/Users/daerlt/.rvm SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.ZjqvUOBPjt/Listeners __CF_USER_TEXT_ENCODING=0x1F6:0x0:0x0 VSCODE_AMD_ENTRYPOINT=vs/workbench/api/node/extensionHostProcess ELECTRON_RUN_AS_NODE=1 rvm_prefix=/Users/daerlt PATH=/Users/daerlt/.rvm/gems/ruby-3.2.2/bin:/Users/daerlt/.rvm/gems/ruby-3.2.2@global/bin:/Users/daerlt/.rvm/rubies/ruby-3.2.2/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/daerlt/.nvm/versions/node/v20.2.0/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/daerlt/.rvm/bin __CFBundleIdentifier=com.microsoft.VSCode PWD=/Users/daerlt/Whitney/code/topgoose/cms VSCODE_HANDLES_UNCAUGHT_ERRORS=true EDITOR=nano XPC_FLAGS=0x0 XPC_SERVICE_NAME=application.com.microsoft.VSCode.161897059.161897065 rvm_version=1.29.12 (latest) rvm_pretty_print_flag=auto HOME=/Users/daerlt SHLVL=2 APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL=1 VSCODE_NLS_CONFIG={"locale":"en-us","osLocale":"en-us","availableLanguages":{},"_languagePackSupport":true} HOMEBREW_PREFIX=/opt/homebrew LOGNAME=daerlt GEM_PATH=/Users/daerlt/.rvm/gems/ruby-3.2.2:/Users/daerlt/.rvm/gems/ruby-3.2.2@global VSCODE_CODE_CACHE_PATH=/Users/daerlt/Library/Application Support/Code/CachedData/dc96b837cf6bb4af9cd736aa3af08cf8279f7685 VSCODE_IPC_HOOK=/Users/daerlt/Library/Application Support/Code/1.89-main.sock NVM_BIN=/Users/daerlt/.nvm/versions/node/v20.2.0/bin VSCODE_PID=77525 HOMEBREW_CELLAR=/opt/homebrew/Cellar INFOPATH=/opt/homebrew/share/info: rvm_delete_flag=0 RUBY_VERSION=ruby-3.2.2 VSCODE_CWD=/
2024-05-10 15:03:49.851 [info] (cms) ruby: warning: Ruby was built without YJIT support. You may need to install rustc to build Ruby with YJIT.
2024-05-10 15:03:50.232 [info] (cms) Ruby LSP> Running bundle install for the custom bundle. This may take a while...
Ruby LSP> Command: (bundle check || bundle install) 1>&2
2024-05-10 15:03:50.244 [info] (cms) ruby: warning: Ruby was built without YJIT support. You may need to install rustc to build Ruby with YJIT.
2024-05-10 15:03:50.362 [info] (cms) Your Ruby version is 3.2.2, but your Gemfile specified ~> 3.3
...
2024-05-10 15:03:51.019 [info] (cms) /Users/daerlt/.rvm/rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/definition.rb:426:in `validate_ruby!': Your Ruby version is 3.2.2, but your Gemfile specified ~> 3.3 (Bundler::RubyVersionMismatch)
from /Users/daerlt/.rvm/rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/definition.rb:401:in `validate_runtime!'
</code>
2024-05-10 15:03:48.953 [info] (cms) Checking if chruby is available on the path with command: /bin/bash -i -c 'chruby --version'
2024-05-10 15:03:49.085 [info] (cms) Checking if rbenv is available on the path with command: /bin/bash -i -c 'rbenv --version'
2024-05-10 15:03:49.200 [info] (cms) Checking if rvm is available on the path with command: /bin/bash -i -c 'rvm --version'
2024-05-10 15:03:49.445 [info] (cms) Discovered version manager rvm
2024-05-10 15:03:49.641 [info] (cms) Activated Ruby environment: NVM_INC=/Users/daerlt/.nvm/versions/node/v20.2.0/include/node MANPATH=/opt/homebrew/share/man: VSCODE_CRASH_REPORTER_PROCESS_TYPE=extensionHost rvm_bin_path=/Users/daerlt/.rvm/bin GEM_HOME=/Users/daerlt/.rvm/gems/ruby-3.2.2 SHELL=/bin/bash HISTSIZE=1000000 HOMEBREW_REPOSITORY=/opt/homebrew IRBRC=/Users/daerlt/.rvm/rubies/ruby-3.2.2/.irbrc TMPDIR=/var/folders/1s/q0gv32zd39l8cgpr7bw748zh0000gp/T/ MallocNanoZone=0 ORIGINAL_XDG_CURRENT_DESKTOP=undefined MY_RUBY_HOME=/Users/daerlt/.rvm/rubies/ruby-3.2.2 HISTFILESIZE=1000000 NVM_DIR=/Users/daerlt/.nvm USER=daerlt COMMAND_MODE=unix2003 rvm_path=/Users/daerlt/.rvm SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.ZjqvUOBPjt/Listeners __CF_USER_TEXT_ENCODING=0x1F6:0x0:0x0 VSCODE_AMD_ENTRYPOINT=vs/workbench/api/node/extensionHostProcess ELECTRON_RUN_AS_NODE=1 rvm_prefix=/Users/daerlt PATH=/Users/daerlt/.rvm/gems/ruby-3.2.2/bin:/Users/daerlt/.rvm/gems/ruby-3.2.2@global/bin:/Users/daerlt/.rvm/rubies/ruby-3.2.2/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/Users/daerlt/.nvm/versions/node/v20.2.0/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/daerlt/.rvm/bin __CFBundleIdentifier=com.microsoft.VSCode PWD=/Users/daerlt/Whitney/code/topgoose/cms VSCODE_HANDLES_UNCAUGHT_ERRORS=true EDITOR=nano XPC_FLAGS=0x0 XPC_SERVICE_NAME=application.com.microsoft.VSCode.161897059.161897065 rvm_version=1.29.12 (latest) rvm_pretty_print_flag=auto HOME=/Users/daerlt SHLVL=2 APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL=1 VSCODE_NLS_CONFIG={"locale":"en-us","osLocale":"en-us","availableLanguages":{},"_languagePackSupport":true} HOMEBREW_PREFIX=/opt/homebrew LOGNAME=daerlt GEM_PATH=/Users/daerlt/.rvm/gems/ruby-3.2.2:/Users/daerlt/.rvm/gems/ruby-3.2.2@global VSCODE_CODE_CACHE_PATH=/Users/daerlt/Library/Application Support/Code/CachedData/dc96b837cf6bb4af9cd736aa3af08cf8279f7685 VSCODE_IPC_HOOK=/Users/daerlt/Library/Application Support/Code/1.89-main.sock NVM_BIN=/Users/daerlt/.nvm/versions/node/v20.2.0/bin VSCODE_PID=77525 HOMEBREW_CELLAR=/opt/homebrew/Cellar INFOPATH=/opt/homebrew/share/info: rvm_delete_flag=0 RUBY_VERSION=ruby-3.2.2 VSCODE_CWD=/
2024-05-10 15:03:49.851 [info] (cms) ruby: warning: Ruby was built without YJIT support. You may need to install rustc to build Ruby with YJIT.
2024-05-10 15:03:50.232 [info] (cms) Ruby LSP> Running bundle install for the custom bundle. This may take a while...
Ruby LSP> Command: (bundle check || bundle install) 1>&2
2024-05-10 15:03:50.244 [info] (cms) ruby: warning: Ruby was built without YJIT support. You may need to install rustc to build Ruby with YJIT.
2024-05-10 15:03:50.362 [info] (cms) Your Ruby version is 3.2.2, but your Gemfile specified ~> 3.3
...
2024-05-10 15:03:51.019 [info] (cms) /Users/daerlt/.rvm/rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/definition.rb:426:in `validate_ruby!': Your Ruby version is 3.2.2, but your Gemfile specified ~> 3.3 (Bundler::RubyVersionMismatch)
from /Users/daerlt/.rvm/rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/bundler-2.3.7/lib/bundler/definition.rb:401:in `validate_runtime!'
After doing this I tried specifying the ruby command but that also generated an error:
<code> "rubyLsp.rubyVersionManager": {
"rubyLsp.customRubyCommand": "docker compose exec -T cms /usr/local/bin/ruby"
<code> "rubyLsp.rubyVersionManager": {
"identifier": "custom"
},
"rubyLsp.customRubyCommand": "docker compose exec -T cms /usr/local/bin/ruby"
</code>
"rubyLsp.rubyVersionManager": {
"identifier": "custom"
},
"rubyLsp.customRubyCommand": "docker compose exec -T cms /usr/local/bin/ruby"
<code>Automatic Ruby environment activation with custom failed: Command failed: docker compose exec -T cms /usr/local/bin/ruby && ruby -W0 -rjson -e 'STDERR.print({ env: ENV.to_h, yjit: !!defined?(RubyVM::YJIT), version: RUBY_VERSION }.to_json)' stat /Users/.../my_project_root/cms/docker-compose.yml: no such file or directory
<code>Automatic Ruby environment activation with custom failed: Command failed: docker compose exec -T cms /usr/local/bin/ruby && ruby -W0 -rjson -e 'STDERR.print({ env: ENV.to_h, yjit: !!defined?(RubyVM::YJIT), version: RUBY_VERSION }.to_json)' stat /Users/.../my_project_root/cms/docker-compose.yml: no such file or directory
</code>
Automatic Ruby environment activation with custom failed: Command failed: docker compose exec -T cms /usr/local/bin/ruby && ruby -W0 -rjson -e 'STDERR.print({ env: ENV.to_h, yjit: !!defined?(RubyVM::YJIT), version: RUBY_VERSION }.to_json)' stat /Users/.../my_project_root/cms/docker-compose.yml: no such file or directory
Not sure if this is relevant but my docker-compose.yml is at my_project_root
and looks like this
dockerfile: ../docker/Dockerfile.cms
- cms-gems:/usr/local/bundle
<code>services:
cms:
init: true
build:
context: ./cms
dockerfile: ../docker/Dockerfile.cms
volumes:
- ./cms:/app/cms
- cms-gems:/usr/local/bundle
- ./backup:/backup
volumes:
cms-gems:
driver: local
</code>
services:
cms:
init: true
build:
context: ./cms
dockerfile: ../docker/Dockerfile.cms
volumes:
- ./cms:/app/cms
- cms-gems:/usr/local/bundle
- ./backup:/backup
volumes:
cms-gems:
driver: local