Kod w pytaniuError „zakaz absolutny domu” za pośrednictwem sieci: SSH
Net::SSH.start('server name', 'user')
ta zwraca „zakaz bezwzględny domu”. "Użytkownik" w rzeczywistości posiada katalog domowy. Jednym z sugerowanych podejść było zmodyfikowanie ~/.ssh/config z pełnymi ścieżkami do pliku IdentityFile. To nie rozwiązało problemu.
Szaloną częścią tego jest to, że kod działa poprawnie, jeśli zostanie wywołany przez irb lub konsolę. W momencie, w którym próbujemy wywoływać go z poziomu metody klasy (z tym samym kodem), zwraca błąd "nie jest absolutny dom".
"Użytkownik" może również ssh na serwerze za pośrednictwem wiersza poleceń bez problemu. Na serwerze działa system Ubuntu.
UPDATE
Dzięki @Phrogz - Poprawkę dotyczącą tego zachodziło ENV [ 'HOME'] do '/ home/wdrożyć'. Jednak nie domyśliłem się, dlaczego $ HOME ustawia się na "." na serwerze. Tak więc zostawię to pytanie bez "odpowiedzi", dopóki ja lub ktoś inny nie zda sobie z tego sprawy. Ręczne ustawienie programu HOME wydaje się bardziej "hackem" niż właściwym rozwiązaniem, ale działa.
Czy masz zestaw zmiennych środowiska "HOME"? 'echo $ HOME' – Phrogz
@Phrogz - jeśli wypiszę go przez irb, konsola, linia poleceń pokazuje ścieżkę. Jednak jeśli ustawię ją jako zmienną w klasie (home =% x [echo $ HOME]) sama (Rails_Root/lib/class_obj), to trafi do mnie z "."? – Jadon
Wygląda na to, że twój interpreter działa pod powłoką o innej ścieżce.Jeśli ustawisz w ścieżce ścieżkę bezwzględną lub całkowicie ją wyłączysz, to to naprawi? – Phrogz