5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-20

前提のお話

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は、こうなっています。

.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コマンドにパスが通っていなかったときの対処法」を参考に解決に至りました。
この記事は、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」であることが確認できました。
エクスプローラーの「ファイルの拡張子を表示する」設定をしている必要があります。
参考→ファイルの拡張子を表示する(パナソニック)

2022-03-20_22h25_47.png

4. launch.json を修正&デバッグ実行確認

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

最後に

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

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

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

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?