Como Configurar o Solargraph no VS Code com WSL2 para projetos legados
Tags: solargraph, vscode, ruby, productivity
Published: 2024-06-21 12:38:56

## Introdução

Recentemente, enfrentei um problema ao tentar configurar o Solargraph no VS Code enquanto utilizava o WSL2 e o ASDF para gerenciar versões do Ruby. Os projetos legados que eu estava trabalhando usavam Docker, o que causava conflitos com as versões do Ruby e resultava em erros ao inicializar o servidor. Após muita pesquisa e tentativa e erro, consegui resolver o problema. Aqui está um guia passo a passo para ajudar outros desenvolvedores que possam estar enfrentando a mesma situação.

## Disclaimer

O caminho mais fácil para resolver problemas de versão de Ruby seria modificar o arquivo `.tool-versions` do projeto para usar uma versão do Ruby compatível com o Solargraph. No entanto, em ambientes legados, essa modificação pode não ser possível devido a dependências específicas do projeto ou restrições impostas pela equipe de desenvolvimento. Portanto, este guia fornece uma solução alternativa que não requer mudanças no arquivo `.tool-versions`.

## Passo a Passo para Resolver o Problema

### Pré-requisitos

1.  **WSL2 instalado**: Siga as [instruções oficiais da Microsoft](https://docs.microsoft.com/en-us/windows/wsl/install) para configurar o WSL2.
2.  **VS Code instalado**: Baixe e instale o [VS Code](https://code.visualstudio.com/).
3.  **Distribuição Linux no WSL2**: Por exemplo, Ubuntu.

#### Passo 1: Configure o Ruby no WSL2 com ASDF

- **Instale o ASDF**: 
No terminal do WSL2, execute os seguintes comandos:
    
``` bash
    git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0
    echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc
    echo '. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
    source ~/.bashrc 
```
- **Adicione o plugin Ruby e instale uma versão do Ruby**:
    
```bash
    asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
    asdf install ruby 3.3.2  # Substitua pela versão necessária
    asdf global ruby 3.3.2
```
 
- **Verifique a instalação do Ruby**:
    
```bash
    ruby -v
``` 

#### Passo 2: Instale o Solargraph

- **Instale o Solargraph**:
 
``` bash
   gem install solargraph 
```
  
- **Verifique a instalação do Solargraph**:
    
```
    which solargraph
``` 

#### Passo 3: Configure o VS Code para Usar o WSL2

- **Instale a Extensão "Remote - WSL"**: No VS Code, abra o Marketplace de Extensões e instale a extensão [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl).
    
2.  **Abra o VS Code no WSL2**: No terminal do WSL2, navegue até o diretório do seu projeto e abra o VS Code:
    
```bash
    code .
```

#### Passo 4: Configure o Solargraph no VS Code

- **Adicione a configuração no `settings.json`**: No VS Code aberto no ambiente WSL2, abra o Command Palette (`Ctrl+Shift+P` ou `Cmd+Shift+P`), procure por "Preferences: Open Settings (JSON)" e adicione a seguinte configuração:
    
```json
    {
        "solargraph.commandPath": "/home/seu_usuario/.asdf/shims/solargraph",
        "solargraph.useBundler": false,
        "solargraph.diagnostics": true,
        "solargraph.formatting": true
    }
```
 
Substitua `/home/seu_usuario/.asdf/shims/solargraph` pelo caminho retornado pelo comando `which solargraph`.
    
- **Reinicie o VS Code**: Reinicie o VS Code para aplicar as novas configurações.
    

### Solução de Problemas

-   **Verifique as permissões e caminhos**: Certifique-se de que o caminho especificado para o Solargraph no `settings.json` está correto e acessível.
    
-   **Logs do VS Code**: Verifique os logs do VS Code para mais detalhes sobre o erro. Acesse os logs através do Command Palette (`Ctrl+Shift+P` -> "Output") e selecione "Solargraph" no menu de saída.
    

### Conclusão

Com esses passos, você deve conseguir configurar o Solargraph no VS Code utilizando a versão do Ruby gerenciada pelo ASDF no ambiente WSL2, sem a necessidade de modificar o arquivo `.tool-versions` do projeto. Espero que este guia seja útil para resolver problemas semelhantes que você possa encontrar no seu ambiente de desenvolvimento Ruby.