How can I specify to the VSCode ruby-lsp extension to use docker container?

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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<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>
<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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<code> "rubyLsp.rubyVersionManager": {
"identifier": "custom"
},
"rubyLsp.customRubyCommand": "docker compose exec -T cms /usr/local/bin/ruby"
</code>
<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"
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<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>
<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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<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>
<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

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật