Artikel | Ausführung |
---|---|
OS | Mac Catalina 10.15.6 |
Visual Studio Code | 1.49.0 |
Ruby | 2.7.1 |
Ich habe rbenv für die Ruby-Versionskontrolle verwendet
Die zum Debuggen benötigten Edelsteine wurden der Gemfile hinzugefügt und waren bereits installiert
gem "ruby-debug-ide"
gem "debase"
Wählen Sie auf der linken Seite des Visual Studio-Codes Ausführen aus und wählen Sie Nur Konfiguration hinzufügen> RSpec - Aktive Spezifikationsdatei
Beim Debuggen mit den obigen Einstellungen blieb die Statusleiste am unteren Bildschirmrand orange, um anzuzeigen, dass sie ausgeführt wurde, und es wurden keine Fortschritte erzielt.
ReRun gibt den folgenden Fehler an die Ansicht [OUTPUT] aus, wie unten gezeigt.
Uncaught exception: /Users/pldb/.rbenv/shims/rspec:3: syntax error, unexpected tSTRING_BEG, expecting do or '{' or '('
[ -n "$RBENV_DEBUG" ] && set -x
^
/Users/pldb/.rbenv/shims/rspec:3: syntax error, unexpected ']', expecting end-of-input
[ -n "$RBENV_DEBUG" ] && set -x
^
/Users/pldb/.rbenv/versions/2.6.6/bin/rdebug-ide:23:in `load': /Users/pldb/.rbenv/shims/rspec:3: syntax error, unexpected tSTRING_BEG, expecting do or '{' or '(' (SyntaxError)
[ -n "$RBENV_DEBUG" ] && set -x
^
/Users/pldb/.rbenv/shims/rspec:3: syntax error, unexpected ']', expecting end-of-input
[ -n "$RBENV_DEBUG" ] && set -x
^
from /Users/pldb/.rbenv/versions/2.6.6/bin/rdebug-ide:23:in `<main>'
.Vscode / launch.json wurde wie folgt geändert
** Vorher ändern **
{
"version": "0.2.0",
"configurations": [
{
"name": "RSpec - active spec file only",
"type": "Ruby",
"request": "launch",
"program": "/Users/pldb/.rbenv/shims/rspec",
"args": [
"-I",
"${workspaceRoot}",
"${file}"
]
}
]
}
** Nach der veränderung **
{
"version": "0.2.0",
"configurations": [
{
"name": "RSpec - active spec file only",
"type": "Ruby",
"request": "launch",
"program": "${workspaceRoot}/bin/rspec",
"args": [
"-I",
"${workspaceRoot}",
"${file}"
]
}
]
}
Dies ist die Standardeinstellung von Visual Studio Code Ich habe jedoch binstub verwendet
Das "Programm" zum Zeitpunkt der Generierung von launch.json war "$ {workspaceRoot} / bin / rspec"
Ich dachte jedoch, dass der Pfad von rspec korrekt war und ersetzte ihn durch den folgenden Pfad
% which rspec
/Users/pldb/.rbenv/shims/rspec
Der Titelfehler wurde dadurch verursacht
Referenz: rspec wird nicht als Programm ausgeführt, sondern als Codedatei analysiert.
Dies ist der Inhalt der Rspec unter Shims, auf den tatsächlich verwiesen wurde
#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x
program="${0##*/}"
if [ "$program" = "ruby" ]; then
for arg; do
case "$arg" in
-e* | -- ) break ;;
*/* )
if [ -f "$arg" ]; then
export RBENV_DIR="${arg%/*}"
break
fi
;;
esac
done
fi
export RBENV_ROOT="/Users/pldb/.rbenv"
exec "/usr/local/Cellar/rbenv/1.1.2/libexec/rbenv" exec "$program" "$@"
Dies ist eine von rbenv generierte Bash-Datei (zum Verweisen auf rspec), deren Lesen zu einem Fehler führte. Mit anderen Worten, es lag daran, dass ich rspec nicht vollständig verstanden habe.
Verwenden Sie binstub
Referenz: [Übersetzung + Erklärung] binstub verstehen: Verhalten von RubyGems, rbenv, bundler
Generieren Sie $ {workspaceRoot} / bin / rspec
in binstub, um es zur rspec zu machen, die in Ihrem Projekt verwendet werden soll
$ {workspaceRoot}
zeigt auf einen Ordner in dem mit Visual Studio Code extrahierten Verzeichnis
Gehen Sie in dieses Verzeichnis und gehen Sie wie folgt vor
% bundle binstubs rspec-core
% ./bin/rspec -v
RSpec 3.9
- rspec-core 3.9.2
- rspec-expectations 3.9.2
- rspec-mocks 3.9.1
- rspec-support 3.9.3
Jetzt können Sie mit den Standardeinstellungen ausführen
Vermeiden Sie Bin-Ordner (um andere Mitwirkende nicht zu beeinträchtigen), wenn Sie einen Edelstein erstellen
% bundle binstubs rspec-core --path exe
% ./exe/rspec -v
RSpec 3.9
- rspec-core 3.9.2
- rspec-expectations 3.9.2
- rspec-mocks 3.9.1
- rspec-support 3.9.3
In diesem Fall lautet der Pfad von "program" in launch.json "$ {workspaceRoot} / exe / rspec"
Wenn Sie sich nicht für die Version von rspec in Ihrem Projekt interessieren, funktioniert dies auch dann, wenn Sie / usr / local / bin / rsepc
wie folgt angeben:
{
"version": "0.2.0",
"configurations": [
{
"name": "RSpec - active spec file only",
"type": "Ruby",
"request": "launch",
"program": "/usr/local/bin/rspec",
"args": [
"-I",
"${workspaceRoot}",
"${file}"
]
}
]
}
Und das ist eine andere Sache, aber ich werde eine andere Sache über das Setzen von launch.json behandeln. In gemspec ist ein Codierungsfehler aufgetreten
Uncaught exception:
[!] There was an error parsing `Gemfile`:
[!] There was an error while loading `xxx.gemspec`: invalid byte sequence in US-ASCII. Bundler cannot continue.
Wie Sie sehen können, liegt dies an den Codierungseinstellungen
Referenz: Codierungsproblem bei Verwendung von gem'xcodeproj '
Die Datei launch.json beim Debuggen während der Edelsteinentwicklung sieht schließlich so aus:
{
"version": "0.2.0",
"configurations": [
{
"name": "RSpec - active spec file only",
"type": "Ruby",
"request": "launch",
"program": "${workspaceRoot}/exe/rspec",
"args": [
"-I",
"${workspaceRoot}",
"${file}"
],
"env": {
"LANG": "en_US.UTF-8",
"LC_COLLATE": "en_US.UTF-8",
"LC_CTYPE": "en_US.UTF-8",
"LC_MESSAGES": "en_US.UTF-8",
"LC_MONETARY": "en_US.UTF-8",
"LC_NUMERIC": "en_US.UTF-8",
"LC_TIME": "en_US.UTF-8",
"LC_ALL": "en_US.UTF-8"
}
}
]
}
Recommended Posts