前提のお話
2022年3月に、サクッと手軽に試せるRubyの環境が欲しくなった。
その為、VSCodeにRubyの実行環境を整えようとしてみた。
予想外につまづきが多く、いくつかの記事の情報を統合して、実行環境を手に入れることができた。
発生したトラブルと、解決の為に参考にしたQiita記事をまとめ、記録として残すことにした。
作業内容
(1) VSCodeのインストール~Ruby環境設定
@momoandbanana22 氏の「Windows 10のVSCodeでrubyのdebug環境を構築する」を参考にさせて頂いた。
ハッキリいって、これで十分。
この後に何もトラブルが発生しなければ、この記事だけ見て終わっていい。
記事の末尾に付いているGitHubへのリンクは、今後の環境設定で参考となる情報が詰まっている。
行き詰まったら、これをダウンロードしてデバッグ環境を試してみると良いだろう。
(2) 「cannot load such file」が出た
しっかり設定が終わった、と思っても見落としはあるもの。
Uncaught exception: cannot load such file -- [実行しようとしたファイルのパス]
が出たら、環境設定の通りにできていないことになります。
@kzyo 氏の 「[Ruby] VSCodeのdebug実行でエラー「cannot load such file」が出た際の対処」を参考に、ミスに気付きました。
launch.jsonの設定のところで、"program"を変更するのを忘れていると、このメッセージが出ます。
(3)今度は「spawn bundle ENOENT」
今度は「bundle」が見つからないって怒られます。
Debugger terminal error: Process failed: spawn bundle ENOENT
全文はこんな感じ。
この辺りで、もう嫌気がさして投げ出したくなります。
でも大丈夫。
@tatsuo98se 氏の「Windows VSCode環境で"Debugger terminal error: Process failed: spawn bundle ENOENT"」が助けてくれます!
ENOENTという見慣れないメッセージ、これの解説もありました。
上記の記事からもリンクされていますが、
@YumaInaura 氏の「ENOENT とは Error NO ENTry の略でファイルやディレクトリが存在しないという意味のエラーメッセージらしい。」
に説明がありました。
(4)「spawn bundle.bat ENOENT」
(3)で上手くいきましたか?残念ながら、僕は行きませんでした。
バージョンの違いでしょうか??
しかもエラーは微妙に変わっただけの
Debugger terminal error: Process failed: spawn bundle.bat ENOENT
「bundle」が「bundle.bat」になっただけ。
何が不満なのっ!?ええっ、「bundle.bat」なんて知らない??そんなぁ~。
結論から言うと、僕の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コマンドにパスが通っていなかったときの対処法」を参考に解決に至りました。
この記事は、Linux環境での内容ですので、そのままではWindowsのVSCodeには適用できません。
以下は、実際に白栁が行った手順の記録です。
1. 以下のコマンドをターミナルで実行
Windowsなのでgrepコマンドは標準ではないのですが、パスの表示はできます。
$ gem contents bundler
2. メモ帳等に貼り付けて 「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
(以下略)
3. エクスプローラーで、ファイル名を確認
実際のファイル名が「bundle.bat」ではなく「bundle.cmd」であることが確認できました。
エクスプローラーの「ファイルの拡張子を表示する」設定をしている必要があります。
参考→ファイルの拡張子を表示する(パナソニック)
4. launch.json を修正&デバッグ実行確認
この項目の最初に記載してあるように、launch.jsonを修正して完了です。
これで無事にデバッグ環境が整いました。
最後に
まず、様々な記事を残してくれた、先達の皆様に感謝を捧げます。
この記事は、上に取り上げた記事へのリンクでしかありません。
この記事にLGTMするより、リンク先の記事へLGTMして下さい。
そして、この記事へたどり着いた多くの方が、Rubyのインストールでトラブルを抱えていることでしょう。
この記事がトラブル解決の一助になれば幸いです。
そして、良いRubyライフを!