WindowsでRuby環境を整えようとしてつまづいた話

# 前提のお話

2022年3月に、サクッと手軽に試せるRubyの環境が欲しくなった。
その為、VSCodeにRubyの実行環境を整えようとしてみた。

予想外につまづきが多く、いくつかの記事の情報を統合して、実行環境を手に入れることができた。
発生したトラブルと、解決の為に参考にしたQiita記事をまとめ、記録として残すことにした。

# 作業内容

## （１） VSCodeのインストール～Ruby環境設定

@momoandbanana22 氏の[「Windows 10のVSCodeでrubyのdebug環境を構築する」](https://qiita.com/momoandbanana22/items/60682935ea8b01b30aec)を参考にさせて頂いた。

ハッキリいって、これで十分。
この後に何もトラブルが発生しなければ、この記事だけ見て終わっていい。

記事の末尾に付いているGitHubへのリンクは、今後の環境設定で参考となる情報が詰まっている。
行き詰まったら、これをダウンロードしてデバッグ環境を試してみると良いだろう。

## （２） 「cannot load such file」が出た

しっかり設定が終わった、と思っても見落としはあるもの。

> Uncaught exception: cannot load such file -- [実行しようとしたファイルのパス]

が出たら、環境設定の通りにできていないことになります。

@kzyo 氏の [「[Ruby] VSCodeのdebug実行でエラー「cannot load such file」が出た際の対処」](https://qiita.com/kzyo/items/67d18bd47dce57d79728)を参考に、ミスに気付きました。

**launch.json**の設定のところで、"program"を変更するのを忘れていると、このメッセージが出ます。

## （３）今度は「spawn bundle ENOENT」

今度は「bundle」が見つからないって怒られます。

> Debugger terminal error: Process failed: spawn bundle ENOENT

全文はこんな感じ。

この辺りで、もう嫌気がさして投げ出したくなります。
でも大丈夫。

@tatsuo98se 氏の[「Windows VSCode環境で"Debugger terminal error: Process failed: spawn bundle ENOENT"」](https://qiita.com/tatsuo98se/items/faeb515012e435c69139)が助けてくれます！

**ENOENT**という見慣れないメッセージ、これの解説もありました。
上記の記事からもリンクされていますが、

@YumaInaura 氏の[「ENOENT とは Error NO ENTry の略でファイルやディレクトリが存在しないという意味のエラーメッセージらしい。」](https://qiita.com/YumaInaura/items/4b664cd00675502407ba)

に説明がありました。

## （４）「spawn bundle.bat ENOENT」

（３）で上手くいきましたか？残念ながら、僕は行きませんでした。
バージョンの違いでしょうか？？

しかもエラーは微妙に変わっただけの

> Debugger terminal error: Process failed: spawn bundle.bat ENOENT

「bundle」が「bundle.bat」になっただけ。
何が不満なのっ！？ええっ、「bundle.bat」なんて知らない？？そんなぁ～。

結論から言うと、僕のlaunch.jsonは、こうなっています。

``` .vscode\launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Local File",
            "type": "Ruby",
            "request": "launch",
            "program": "${file}",
            "useBundler": true,
            "pathToBundler": "bundle.cmd"
        }
    ]
}

```

pathToBundler の設定が「bundle.cmd」になっています。
拡張子が違っていた様です。

これを @hyshhryk 氏の[「bundleコマンドにパスが通っていなかったときの対処法」](https://qiita.com/hyshhryk/items/7e728ad57d963454b142)を参考に解決に至りました。
この記事は、Linux環境での内容ですので、そのままではWindowsのVSCodeには適用できません。

以下は、実際に白栁が行った手順の記録です。

### １.  以下のコマンドをターミナルで実行 

Windowsなのでgrepコマンドは標準ではないのですが、パスの表示はできます。

``` 
$ gem contents bundler 
```

### ２. メモ帳等に貼り付けて 「bundle」 を探す


>C:/Ruby26-x64/bin/bundle
C:/Ruby26-x64/bin/bundler
C:/Ruby26-x64/lib/ruby/2.6.0/bundler.rb
C:/Ruby26-x64/lib/ruby/2.6.0/bundler/build_metadata.rb
C:/Ruby26-x64/lib/ruby/2.6.0/bundler/capistrano.rb
C:/Ruby26-x64/lib/ruby/2.6.0/bundler/cli.rb
C:/Ruby26-x64/lib/ruby/2.6.0/bundler/cli/add.rb
（以下略） 

### ３. エクスプローラーで、ファイル名を確認

実際のファイル名が「bundle.bat」ではなく「bundle.cmd」であることが確認できました。
エクスプローラーの「ファイルの拡張子を表示する」設定をしている必要があります。
参考→[ファイルの拡張子を表示する（パナソニック）](https://askpc.panasonic.co.jp/beginner/guide/ten02/2022.html)

![2022-03-20_22h25_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/351932/f0045cae-3dc3-f0c6-6a12-ebc1b53ecf39.png)

### ４. launch.json を修正＆デバッグ実行確認

この項目の最初に記載してあるように、launch.jsonを修正して完了です。
これで無事にデバッグ環境が整いました。


## 最後に

まず、様々な記事を残してくれた、先達の皆様に感謝を捧げます。
この記事は、上に取り上げた記事へのリンクでしかありません。
この記事にLGTMするより、リンク先の記事へLGTMして下さい。

そして、この記事へたどり着いた多くの方が、Rubyのインストールでトラブルを抱えていることでしょう。
この記事がトラブル解決の一助になれば幸いです。

そして、良いRubyライフを！