web-dev-qa-db-fra.com

Comment exécuter et déboguer Ruby on Rails from Visual Studio Code?

  • Comment pouvez-vous lancer Ruby on Rails en utilisant les fonctionnalités intégrées de lancement/débogage de code de Visual Studio?)

  • Comment réparez-vous le Debugger terminal error: Process failed: spawn rdebug-ide ENOENT Erreur?

10
janniks

Configuration et lancement

  1. Installez le VS Code Ruby plugin (hit ++P et tapez ext install dans l'invite, puis recherchez Ruby)
  2. Installez certains Ruby gemmes nécessaires
gem install Ruby-debug-ide
gem install debase
  1. Ajoutez un lancer la configuration dans Visual Studio Code (exemple de configuration illustré ci-dessous)
{
    "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"
    ]
}

Dans certains cas, vous n'aurez peut-être pas besoin de spécifier la section env. Dans d'autres cas, vous pouvez lancer VS Code en utilisant la CLI (c'est-à-dire depuis le terminal), qui sur certains systèmes définit automatiquement les variables d'environnement correctes.

  1. Courez!

Dépannage

Si vous obtenez l'erreur suivante

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

Vos variables d'environnement (env) ne sont probablement pas définies et le plugin ne peut pas trouver les binaires nécessaires.

  1. Assurez-vous que toutes les gemmes sont installées et essayez d'exécuter bundler install --binstubs si vous utilisez bundler.
  2. Assurez-vous que la section env est définie dans votre configuration de lancement. Exécutez la commande Shell suivante pour générer votre 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"

Les fenêtres

Assurez-vous d'utiliser l'orthographe (et la capitalisation) correctes de la variable path, c'est-à-dire Path sous Windows


Sources:

11
janniks

J'ai passé la majeure partie de la journée à essayer de résoudre ce problème.

J'ai fini par supprimer ma configuration launch.json comme suit:

"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
    }

]

Tout d'abord, en particulier si vous utilisez RVM et que vous avez différents jeux de gemmes, assurez-vous que vos chemins sont cohérents avec le jeu de gemmes correct.

Ce qui a résolu le problème pour moi, c'est pathToBundler.

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

Il semble y avoir une certaine incompatibilité autour de la définition du chemin d'accès au bundle binstubs (illustré ci-dessus) et le bundler pointé depuis/wrappers/(illustré ci-dessous), donc en changeant pathToBundler en:

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

résolu le problème.

Il y a une sorte de discussion connexe ici:

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

qui parle de binstubs mais pas spécifiquement de VSCode et de débogage.

4
Mitch

Si vous utilisez un gestionnaire de version Ruby tel que rbenv qui repose sur des shims bash, essayez de lancer VS Code à partir du terminal. Cela devrait permettre à VS Code de récupérer les variables env définies par rbenv Vous pouvez également définir vos vars env dans launch.json, mais ce n'est pas une solution très maintenable.

0
griest