Der Code in FrageError "nicht absolut home" über Net: SSH
Net::SSH.start('server name', 'user')
Das gibt "nicht-absolut home". Der "Benutzer" hat tatsächlich ein Home-Verzeichnis. Ein vorgeschlagener Ansatz bestand darin, ~/.ssh/config mit vollständigen Pfaden zum IdentityFile zu modifizieren. Dies hat das Problem nicht gelöst.
Der verrückte Teil davon ist, dass der Code funktioniert, wenn er über IRB oder Konsole aufgerufen wird. In dem Moment, in dem wir versuchen, es innerhalb einer Klassenmethode (mit demselben Code) aufzurufen, wird der Fehler "nicht absolute Heimat" zurückgegeben.
Der 'Benutzer' kann auch ssh über die Befehlszeile ohne Problem in den Server. Auf dem Server läuft Ubuntu.
UPDATE
Dank @Phrogz - Die Lösung für dieses ENV einstellt [ 'HOME'] zu '/ home/deploy'. Ich habe jedoch nicht herausgefunden, warum $ HOME auf "gesetzt" wird. auf dem Server. Also werde ich diese Frage ohne eine "Antwort" aufgeben, bis ich oder jemand anderes das herausgefunden habe. Das manuelle Festlegen von HOME fühlt sich eher wie ein "Hack" an als eine richtige Lösung, aber es funktioniert.
Haben Sie eine 'HOME'-Umgebungsvariable gesetzt? 'echo $ HOME' – Phrogz
@Phrogz - wenn ich es über irb, Konsole, Befehlszeile ausgibt zeigt es einen Pfad. Wenn ich jedoch eine Variable in der Klasse (home =% x [echo $ HOME]) selbst (Rails_Root/lib/class_obj) setze, trifft sie mich mit einem "."? – Jadon
Sieht so aus, als ob Ihr Interpreter unter einer Shell mit einem anderen Pfad läuft.Wenn Sie es entweder auf einen absoluten Pfad in Ihrem Skript setzen oder es vollständig deaktivieren, wird das Problem dadurch behoben? – Phrogz