Zed 에디터에서 Ruby 개발 환경을 설정하는 과정은 다음과 같습니다.
1. Ruby 지원 설정
- 공식 Ruby 확장 프로그램 활성화: Zed의
zed: extensions
메뉴를 통해 Vitaly Slobodin이 개발한 공식 Ruby 확장 프로그램을 활성화합니다. 이 확장 프로그램은 Rust로 작성되었으며, Zed의 공식 문서에서 관련 정보를 확인할 수 있습니다.
2. Ruby LSP 구성
- 기본 언어 서버 변경: Zed는 기본적으로 Solargraph를 Ruby 언어 서버로 사용하지만, Ruby LSP를 선호하는 경우 Zed 설정(
settings.json
)에서 다음과 같이 변경할 수 있습니다.json { "languages": { "Ruby": { "language_servers": ["ruby-lsp"] } } }
- 문제 확인: Ruby 파일 열기 후
debug: open language server logs
명령을 통해 Ruby LSP가 정상 작동하는지 확인합니다. - 진단(Linting) 활성화: Zed의 풀 진단(pull diagnostics) 지원으로 진단 기능이 정상 작동합니다.
- onTypeFormatting 비활성화: Ruby LSP의 알려진 문제(블록 인자
|
입력 시 커서 위치 오류)를 해결하기 위해onTypeFormatting
기능을 비활성화할 수 있습니다.json { "lsp": { "ruby-lsp": { "initialization_options": { "enabledFeatures": { "onTypeFormatting": false } } } } }
3. 전역 vs 로컬 설정
- 프로젝트별 설정:
.zed/settings.json
파일을 통해 프로젝트별 설정을 관리할 수 있습니다. 이는 RuboCop 또는 Standard와 같은 린팅/포맷팅 도구의 다양한 구성에 유용합니다.
4. 테스트 실행
- Tasks 기능 활용: Zed는 LSP의 Code Lens 기능을 지원하지 않지만, 강력한 Tasks 기능을 사용하여 유사한 테스트 실행 환경을 구축할 수 있습니다.
.zed/tasks.json
파일에 다음 예시와 같이 태스크를 추가할 수 있습니다.json [ { "label": "test $ZED_RELATIVE_FILE:$ZED_ROW", "command": "bundle exec rails", "args": ["test", ""$ZED_RELATIVE_FILE:$ZED_ROW""], "tags": ["ruby-test"] } ]
5. 고급 LSP 문제 해결
- RPC 메시지 확인:
debug: language server logs
창에서 RPC 메시지 기능을 활성화하여 언어 서버의 요청 및 응답을 상세히 확인할 수 있습니다.
6. 미지원 기능 및 대안
- Zed의 LSP 구현: 일부 Ruby LSP 기능은 VS Code 확장 프로그램의 사용자 정의 동작에 의존하거나 Zed의 LSP 사양 구현이 아직 미흡하여 지원되지 않을 수 있습니다.
- 디버거: rdbg 지원을 위한 PR이 진행 중입니다.
- 스니펫: Ruby 확장 프로그램에 스니펫 추가 PR이 진행 중입니다.
- ERB 린팅/포맷팅: Herb(린팅) 및 erb-formatter(포맷팅)를 활용할 수 있습니다.
- 테스트 토글:
zed-test-toggle
확장 프로그램을 사용할 수 있습니다. - Sorbet 지원: Ruby 확장 프로그램 v0.9.0부터 내장 지원됩니다.