

# 概要

VSCodeにRuby-LSPを導入してRubocopでコードをfmt, lintしたいです。

昨日までは普通に動いていたのでたぶん余計なところを触っておかしくなっています。  
（editor.formatOnSaveを指定してます。）

Ruby-LSP自体は動いてますが、Rubocopのauto-correctが走ってないかんじです。

文の後に空白を入れると、それだけは修正してくれます。

[code]

    Error running diagnostics: An internal error occurred incompatible character encodings: UTF-8 and ASCII-8BIT.
    Updating to a newer version of RuboCop may solve this.
    For more details, run RuboCop on the command line.
    
[/code]

[code]

    Formatting error: An internal error occurred incompatible character encodings: UTF-8 and ASCII-8BIT.
    Updating to a newer version of RuboCop may solve this.
    For more details, run RuboCop on the command line.
    
[/code]

というエラーが出ています。更新も何も最新バージョンなんですがねえ…  
文字コードもこちらがいじれる分は全部UTF-8で統一してるし。

（追記）エラーについては解決しました。csvファイルに反応してたみたい。とはいえ文字コードはutf-8なんですがね。。。

[![screen
shot](https://i.stack.imgur.com/fLGIc.png)](https://i.stack.imgur.com/fLGIc.png)

  * 画像からもわかる通り、警告自体は出ています。
  * （修正）警告はsolargraphのものでした。solargraphを切ると消えました。でもなぜかマウスオーバー時のツールチップにはrubocopの修正内容が出えてました。solargraphのLSPってrubocopも中継してくれるっぽい？
  * 右下のパネルの通りRuby-LSP側へのfmterの指定はできてます。
  * `rubocop --auto-correct`は正常に動作します。

[![screen
shot2](https://i.stack.imgur.com/CcCzV.png)](https://i.stack.imgur.com/CcCzV.png)

  * 左下のvscode-serverの表示からわかる通り、サーバーが一つも動いてないっぽいです。
  * あと、なぜかprismとかいうパーサー？がエラーを出してくれてます。

# 試したこと

  * workspaceを構築しなおす → エラー自体は消えた
  * サーバーの混線かと思い、今日VSCodeに導入したGithub Copilotを無効化 → なにもかわらず
  * vscode側の設定に何か付け足されてないか調査 → 特に何も変わらず

# 構築手順

  1. `take my-ruby`
  2. `bundle init`
  3. Gemfileに`rubocop`とか`solargraph`とか書きこむ
  4. `bundle install`

こうすると、ファイル構造は

[code]

    $ tree -a
    .
    |-- .ruby-lsp
    |   |-- .gitignore
    |   |-- Gemfile
    |   |-- Gemfile.lock
    |   `-- main_lockfile_hash
    |-- Gemfile
    `-- Gemfile.lock
    
    1 directory, 6 files
    
[/code]

# 環境

  * Ubuntu 22.04.3 LTS (on wsl 2)
  * zsh 5.8.1 (x86_64-ubuntu-linux-gnu)
  * ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
  * rubocop 1.57.2
  * Ruby-LSP v0.12.5
  * VSCode 1.84.2

## bundle list

[code]

    Gems included by the bundle:
      * ast (2.4.2)
      * backport (1.2.0)
      * benchmark (0.3.0)
      * diff-lcs (1.5.0)
      * e2mmap (0.1.0)
      * jaro_winkler (1.5.6)
      * json (2.6.3)
      * kramdown (2.4.0)
      * kramdown-parser-gfm (1.1.0)
      * language_server-protocol (3.17.0.3)
      * nokogiri (1.15.5)
      * parallel (1.23.0)
      * parser (3.2.2.4)
      * racc (1.7.3)
      * rainbow (3.1.1)
      * rbs (2.8.4)
      * regexp_parser (2.8.2)
      * reverse_markdown (2.1.1)
      * rexml (3.2.6)
      * rubocop (1.57.2)
      * rubocop-ast (1.30.0)
      * ruby-progressbar (1.13.0)
      * solargraph (0.49.0)
      * thor (1.3.0)
      * tilt (2.3.0)
      * unicode-display_width (2.5.0)
      * yard (0.9.34)
    Use `bundle info` to print more detailed information about a gem
    
[/code]

## settings.json

[code]

    "[ruby]": {
            "editor.defaultFormatter": "Shopify.ruby-lsp",
            "editor.semanticHighlighting.enabled": true,
            "editor.tabSize": 2,
            "editor.formatOnSave": true,
            "editor.formatOnType": true,
            "editor.insertSpaces": true,
            "files.trimTrailingWhitespace": true,
            "files.insertFinalNewline": true,
            "files.trimFinalNewlines": true,
        },
        "rubyLsp.enableExperimentalFeatures": true,
        "rubyLsp.formatter": "rubocop",
        "rubyLsp.rubyVersionManager": "rbenv",
    
[/code]

# 追記

## [cubick](https://ja.stackoverflow.com/users/3060/cubick)氏の指摘の検証

### 方法

再度ワークスペースを新規作成して最新バージョンか確認。  
さもなくば更新して検証。

### 結果

[code]

    ruby-lsp (0.13.0)
          language_server-protocol (~> 3.17.0)
          prism (>= 0.18.0, < 0.19)
          sorbet-runtime (>= 0.5.5685)
    
[/code]

[rubygems/ruby-lsp](https://rubygems.org/gems/ruby-lsp)によれば、ver0.13.0が最新。  
[同様にlanguage_server-protocol](https://rubygems.org/gems/language_server-
protocol)によれば、ver3.17.0.3が最新。  
おそらくバージョン自体は問題ではないはず。

### 参考

[VSCode拡張機能 ruby-lspでハマったところ](https://scrapbox.io/wai-
doi/VSCode%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD_ruby-
lsp%E3%81%A7%E3%83%8F%E3%83%9E%E3%81%A3%E3%81%9F%E3%81%A8%E3%81%93%E3%82%8D):
こちらはlanguage_server-protocolのバージョンにはまったらしい。


CC BY-SA 4.0
2023-11-27T14:03:03.350
96924
2023-12-02T13:40:25.307
2023-12-02T13:40:25.307
53242
53242
question
ruby rubygems
VScodeでRuby LSPのLinter、fmterが動作しない