web-dev-qa-db-ja.com

Ruby on Rails Visual Studio Codeから)を実行してデバッグする方法を教えてください。

  • 組み込みのVisual Studioコードの起動/デバッグ機能を使用してRuby on Rails)をどのように起動できますか?

  • どのようにDebugger terminal error: Process failed: spawn rdebug-ide ENOENTエラーを修正しますか?

10
janniks

セットアップと起動

  1. インストール VSコードRubyプラグイン(ヒット ++P プロンプトにext installと入力し、Rubyを検索します
  2. 必要なものをいくつかインストールRuby gems
gem install Ruby-debug-ide
gem install debase
  1. Visual Studio Codeに launch configuration を追加します(以下に示す構成例)
{
    "name": "Rails server",
    "type": "Ruby",
    "request": "launch",
    "cwd": "${workspaceRoot}",
    "program": "${workspaceRoot}/bin/Rails",
    "env": {
        "PATH": "YOUR_PATH_HERE",
        "GEM_HOME": "YOUR_GEM_HOME_HERE",
        "GEM_PATH": "YOUR_GEM_PATH_HERE",
        "Ruby_VERSION": "YOUR_Ruby_VERSION_HERE"
    },
    "args": [
        "server"
    ]
}

envセクションを指定する必要がない場合もあります。他の場合では、VSコードを起動できます CLIを使用(つまり、端末から)。これにより、一部のシステムでは、正しい環境変数が自動的に設定されます。

  1. 実行!

トラブルシューティング

次のエラーが発生した場合

Debugger terminal error: Process failed: spawn rdebug-ide ENOENT

環境変数(env)が設定されていない可能性が高く、プラグインが必要なバイナリを見つけることができません。

  1. すべてのgemがインストールされていることを確認し、バンドラーを使用している場合はbundler install --binstubsを実行してみてください。
  2. 起動構成でenvセクションが設定されていることを確認してください。次のシェルコマンドを実行して、envを生成します。
printf "\n\"env\": {\n  \"PATH\": \"$PATH\",\n  \"GEM_HOME\": \"$GEM_HOME\",\n  \"GEM_PATH\": \"$GEM_PATH\",\n  \"Ruby_VERSION\": \"$Ruby_VERSION\"\n}\n\n"

ウィンドウズ

path変数の正しいスペル(および大文字)を使用してください。つまり、WindowsではPathです。


出典

11
janniks

私は一日の大半をこれを解決するために費やしました。

私は私のlaunch.json設定を次のように削除することになりました:

"configurations": [
    {
       "name": "Rails server",
        "type": "Ruby",
        "request": "launch",
        "cwd": "${workspaceRoot}",
        "program": "/Users/mitch/.rvm/gems/Ruby-2.3.0@gg_portal/bin/Rails",
        "args": [
            "server"
        ],
        "useBundler": true,
        "pathToRDebugIDE": "/Users/mitch/.rvm/gems/Ruby-2.3.0@gg_portal/gems/Ruby-debug-ide-0.6.1",
        "pathToBundler": "/Users/mitch/.rvm/gems/Ruby-2.3.0@gg_portal/wrappers/bundle",
        "showDebuggerOutput": true
    }

]

まず、特にRVMを使用していて、さまざまなジェムセットがある場合は、パスが正しいジェムセットと一致していることを確認してください。

私にとって問題を解決したのは、pathToBundlerでした。

which bundle
/Users/mitch/.rvm/gems/Ruby-2.3.0@gg_portal/bin/bundle

Binstubsバンドラーへのパスの設定(上記を参照)と/ wrappers /(下記を参照)を指すバンドラーの設定に互換性がないため、pathToBundlerを次のように変更します。

"pathToBundler": "/Users/mitch/.rvm/gems/Ruby-2.3.0@gg_portal/wrappers/bundle",

問題を解決しました。

ここで一種の関連する議論があります:

https://github.com/Rails/rails/issues/31193

具体的にはVSCodeとデバッグではありませんが、binstubについて説明しています。

4
Mitch

Ruby bash shimに依存するrbenvなどのバージョンマネージャーを使用している場合は、ターミナルからVS Codeを起動してみてください。これにより、VS Codeがrbenvが設定するenv変数を取得できるようになります。 。または、launch.jsonに環境変数を設定することもできますが、これは保守性の高いソリューションではありません。

0
griest