Ich habe Probleme mit Projekten, die diesel
enthalten und beispielsweise Umgebungsvariablen verwenden:
pub fn establish_connection() -> SqliteConnection {
dotenv().ok();
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
SqliteConnection::establish(&database_url)
.expect(&format!("Error connecting to {}", database_url))
}
Ergibt im Ausgabefenster folgendes:
{"message":"proc-macro abgeleitet in Panik","code":null,"level":"error","spans":[{"file_name":"
","byte_start":72,"byte_end":83,"line_start":3,"line_end":3,"column_start":14,"column_end":25,"is_primary":true,"text":[{ "text":"# [ derive ( InferSchema ) ] # [","highlight_start":14,"highlight_end":25}],"label":null,"suggested_replacement":null,"expansion":{"span" :{"Dateinamen":" ","byte_start":72,"byte_end":83,"line_start":3,"line_end":3,"column_start":14,"column_end":25,"is_primary":false,"text":[{ "text":"# [ derive ( InferSchema ) ] # [","highlight_start":14,"highlight_end":25}],"label":null,"suggested_replacement":null,"expansion":{"span" :{"file_name":"Development/pathfinder-server/pathfinder-server/src/schema.rs","byte_start":0,"byte_end":37,"line_start":1,"line_end":1,"column_start ":1,"column_end":38,"is_primary":false,"text":[{"text":"infer_schema!("dotenv:DATABASE_URL");","highlight_start":1,"highlight_end":38 }],"label":null,"suggested_replacement":null,"expansion":null},"macro_decl_name":"infer_schema!","def_site_span":{"file_name":" ","byte_start":0,"byte_end":484,"line_start":1,"line_end":11,"column_start":1,"column_end":53,"is_primary":false,"text":[{ "text":"( $ database_url : expr ) => {","highlight_start":1,"highlight_end":31},{"text":"mod __diesel_infer_schema {","highlight_start":1,"highlight_end": 28},{"text":"# [ableiten ( InferSchema ) ] # [","highlight_start":1,"highlight_end":33},{"text":"infer_schema_options ( database_url = $ database_url ) ] struct _Dummy ; } pub","highlight_start":1,"highlight_end":79},{"text":"use self :: __diesel_infer_schema :: * ; } ; (","highlight_start":1,"highlight_end":47},{"text":"$ database_url : expr , $ schema_name : expr ) => {","highlight_start":1,"highlight_end":52}, {"text":"mod __diesel_infer_schema {","highlight_start":1,"highlight_end":28},{"text":"# [ableiten ( InferSchema ) ] # [","highlight_start":1,"highlight_end" :33},{"text":"infer_schema_options (","highlight_start":1,"highlight_end":23},{"text":"database_url = $ database_url , schema_name = $ schema_name ) ] struct _Dummy","highlight_start ":1,"highlight_end":78},{"text":"; } pub use self :: __diesel_infer_schema :: * ; } ;","highlight_start":1,"highlight_end":53}],"label":null,"suggested_replacement":null,"expansion":null}}},"macro_decl_name":"#[derive(InferSchema) ]","def_site_span":null}}],"children":[{"message":"message: called Result::unwrap()
on aErr
value: "Failed to load environment variable DATABASE_URL: Umgebungsvariable nicht gefunden"","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error: proc-macro ableite panickedn --> Development/pathfinder-server/pathfinder-server/src/schema.rs:1:1n |n1 | infer_schema!("dotenv:DATABASE_URL");n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ n |n = Hilfe: Nachricht: aufgerufenResult::unwrap()
bei einemErr
-Wert: "Fehler beim Laden der Umgebungsvariablen DATABASE_URL: Umgebungsvariable nicht gefunden"n = Hinweis: Dieser Fehler stammt von einem Makro außerhalb des aktuellen Crates (in Nightly-Builds mit -Z external -macro-backtrace für weitere Informationen)nn"}
{"message":"proc-macro abgeleitet in Panik","code":null,"level":"error","spans":[{"file_name":"","byte_start":72,"byte_end":83,"line_start":3,"line_end":3,"column_start":14,"column_end":25,"is_primary":true,"text":[{ "text":"# [ derive ( InferSchema ) ] # [","highlight_start":14,"highlight_end":25}],"label":null,"suggested_replacement":null,"expansion":{"span" :{"Dateinamen":" ","byte_start":72,"byte_end":83,"line_start":3,"line_end":3,"column_start":14,"column_end":25,"is_primary":false,"text":[{ "text":"# [ derive ( InferSchema ) ] # [","highlight_start":14,"highlight_end":25}],"label":null,"suggested_replacement":null,"expansion":{"span" :{"file_name":"Development/pathfinder-server/pathfinder-server/src/schema.rs","byte_start":0,"byte_end":37,"line_start":1,"line_end":1,"column_start ":1,"column_end":38,"is_primary":false,"text":[{"text":"infer_schema!("dotenv:DATABASE_URL");","highlight_start":1,"highlight_end":38 }],"label":null,"suggested_replacement":null,"expansion":null},"macro_decl_name":"infer_schema!","def_site_span":{"file_name":" ","byte_start":0,"byte_end":484,"line_start":1,"line_end":11,"column_start":1,"column_end":53,"is_primary":false,"text":[{ "text":"( $ database_url : expr ) => {","highlight_start":1,"highlight_end":31},{"text":"mod __diesel_infer_schema {","highlight_start":1,"highlight_end": 28},{"text":"# [ableiten ( InferSchema ) ] # [","highlight_start":1,"highlight_end":33},{"text":"infer_schema_options ( database_url = $ database_url ) ] struct _Dummy ; } pub","highlight_start":1,"highlight_end":79},{"text":"use self :: __diesel_infer_schema :: * ; } ; (","highlight_start":1,"highlight_end":47},{"text":"$ database_url : expr , $ schema_name : expr ) => {","highlight_start":1,"highlight_end":52}, {"text":"mod __diesel_infer_schema {","highlight_start":1,"highlight_end":28},{"text":"# [ableiten ( InferSchema ) ] # [","highlight_start":1,"highlight_end" :33},{"text":"infer_schema_options (","highlight_start":1,"highlight_end":23},{"text":"database_url = $ database_url , schema_name = $ schema_name ) ] struct _Dummy","highlight_start ":1,"highlight_end":78},{"text":"; } pub use self :: __diesel_infer_schema :: * ; } ;","highlight_start":1,"highlight_end":53}],"label":null,"suggested_replacement":null,"expansion":null}}},"macro_decl_name":"#[derive(InferSchema) ]","def_site_span":null}}],"children":[{"message":"message: called Result::unwrap()
on aErr
value: "Failed to load environment variable DATABASE_URL: Umgebungsvariable nicht gefunden"","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"error: proc-macro ableite panickedn --> Development/pathfinder-server/pathfinder-server/src/schema.rs:1:1n |n1 | infer_schema!("dotenv:DATABASE_URL");n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ n |n = Hilfe: Nachricht: aufgerufenResult::unwrap()
bei einemErr
-Wert: „Fehler beim Laden der Umgebungsvariablen DATABASE_URL: Umgebungsvariable nicht gefunden“n = Hinweis: Dieser Fehler stammt von einem Makro außerhalb des aktuellen Crates (in Nightly-Builds mit -Z external -macro-backtrace für weitere Informationen)nn"}
Gibt es eine Möglichkeit, Umgebungsvariablen an das RLS zu übergeben? Oder vielleicht muss ein Pfad festgelegt werden, damit dotenv
die Umgebungsvariable herausfinden kann.
Hah, ich bin auf GENAU das gleiche Problem gestoßen! Würde mich freuen, wenn jemand, der mehr Erfahrung mit Rust hat, eine Idee hat, wie man das lösen kann.
Ich würde es auch gerne wissen; hat einer von euch @mpj oder @kjeremy es herausgefunden?
Dasselbe Problem für alle, gibt es eine Möglichkeit, RLS dazu zu bringen, ein .bat-Skript oder so etwas auszuführen?
Im Moment kann dies mit einem Wrapper-Skript, das in der rust-client.rlsPath
-Konfiguration festgelegt ist, umgangen werden. Hier ist ein Beispiel-Wrapper-Skript:
#!/bin/bash
(>&2 echo "Running custom RLS wrapper")
RLS=rls
# Needs to pick up internal rustc libraries in the sysroot
export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib
# Set some extra env vars you'd like
export RUST_BACKTRACE=full
# Important to also forward all the arguments to the RLS binary
$RLS "$@"
Das möchte ich aber auf erstklassigem Niveau unterstützen.
Fügen Sie eine Windows-Version für vscode rust-client.rlsPath
hinzu:
<strong i="7">@echo</strong> off
rustc --print sysroot > a:/tmp/temp-rls-msvc.txt
SET /p LD_LIBRARY_PATH=<a:/tmp/temp-rls-msvc.txt
SET RUST_BACKTRACE=full
SET "LIB=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\lib\x64;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.18362.0\um\x64;"
rls %*
<strong i="8">@echo</strong> on
Hilfreichster Kommentar
Im Moment kann dies mit einem Wrapper-Skript, das in der
rust-client.rlsPath
-Konfiguration festgelegt ist, umgangen werden. Hier ist ein Beispiel-Wrapper-Skript:Das möchte ich aber auf erstklassigem Niveau unterstützen.