Zed의 Ruby 언어 서버 지원
Zed의 Ruby 확장 기능은 여러 언어 서버를 지원하여 코드 완성, 진단, 코드 액션 등의 기능을 제공합니다. 주요 지원 언어 서버는 다음과 같습니다.
- Solargraph: 기본적으로 활성화되어 있으며, 진단 및 포맷팅 기능을 설정으로 활성화할 수 있습니다.
- Ruby-LSP: Solargraph와 함께 주요 언어 서버로 선택할 수 있으며,
initialization_options
를 통해 포매터나 린터 등을 구성할 수 있습니다. - Rubocop: Ruby를 위한 정적 코드 분석기 및 린터로, 위반 감지 및 자동 수정 기능을 제공합니다.
safeAutocorrect
옵션으로 안전하지 않은 자동 수정을 제어할 수 있습니다. - Sorbet: Ruby를 위한 정적 타입 검사기로, 점진적 타입 시스템을 활용합니다.
- Steep: Ruby Signature (RBS) 파일을 활용하는 또 다른 정적 타입 검사기입니다.
언어 서버 활성화 및 구성
언어 서버는 다음 순서에 따라 활성화됩니다.
- 프로젝트의
Gemfile
에서 발견될 경우bundle exec
를 통해 사용됩니다. Gemfile
에 없을 경우 시스템PATH
에서 실행 파일을 찾습니다.- 두 위치 모두 없을 경우, Ruby 확장 기능이 전역 Gem으로 자동 설치합니다.
use_bundler
설정을 false
로 지정하여 Gemfile
검색을 건너뛰고 시스템 실행 파일을 강제로 사용할 수 있습니다.
json
{
"lsp": {
"<SERVER_NAME>": {
"settings": {
"use_bundler": false
}
}
}
}
언어 서버 전환 예시
- Ruby-LSP 활성화 및 Solargraph/Rubocop 비활성화:
"language_servers": ["ruby-lsp", "!solargraph", "!rubocop", "..."]
- Rubocop 활성화:
"language_servers": ["ruby-lsp", "rubocop", "!solargraph", "..."]
Solargraph 및 Ruby-LSP 설정
Solargraph의 포맷팅 및 진단은 기본적으로 비활성화되어 있으므로, initialization_options
를 통해 활성화할 수 있습니다. Ruby-LSP 또한 initialization_options
를 통해 formatter
나 linters
와 같은 기능을 구성할 수 있으며, 프로젝트별 설정도 가능합니다.
Tailwind CSS 통합
Ruby 및 ERB 파일에서 Tailwind CSS 언어 서버를 사용하려면 includeLanguages
및 classRegex
설정을 추가해야 합니다. 이를 통해 ERB 파일의 HTML 속성이나 class:
키 뒤의 Ruby/ERB 문자열에서 Tailwind CSS 클래스 자동 완성을 지원합니다.
테스트 및 디버깅
- 테스트:
tasks.json
파일을 통해 Minitest, RSpec 등 다양한 테스트 프레임워크에 대한 사용자 정의 태스크를 설정하여 에디터 내에서 테스트를 실행할 수 있습니다. - 디버깅:
rdbg
디버그 어댑터는debug
Gem을 사용하여 Ruby 코드 디버깅을 지원합니다. 현재 파일 디버깅이나 Rails 서버 디버깅과 같은 설정을debug.json
에 추가할 수 있습니다.
ERB 템플릿 포맷팅
erb-formatter
Gem을 활용하여 ERB 템플릿을 포맷팅할 수 있도록 HTML/ERB
언어에 대한 외부 포매터를 설정할 수 있습니다.