Net::SSH.start('server name', 'user')
這將返回「非絕對的家」的代碼。 '用戶'實際上有一個主目錄。一種建議的方法是使用IdentityFile的完整路徑修改〜/ .ssh/config。這並沒有解決問題。
這個瘋狂的部分是,如果通過irb或控制檯調用,代碼工作正常。當我們嘗試從類方法(使用相同的代碼)中調用它時,它會返回「非絕對主頁」錯誤。
'用戶'也可以通過命令行ssh進入服務器,沒有問題。服務器運行Ubuntu。
UPDATE
感謝@Phrogz - 這樣做的修復程序設置ENV [ 'HOME']爲 '/家庭/部署'。不過,我還沒有弄清楚爲什麼$ HOME被設置爲「。」。在服務器上。所以,我會在沒有「回答」的情況下回答這個問題,直到我或其他人都能解決這個問題。不得不手動設置HOME感覺更像是一種「黑客」,而不是一個適當的解決方案,但它確實有效。
你有一個'HOME'環境變量集嗎? 'echo $ HOME' – Phrogz
@Progroz - 如果我通過irb,console,command line輸出它會顯示一條路徑。但是,如果我在類中設置了一個變量(home =%x [echo $ HOME])本身(Rails_Root/lib/class_obj),那麼它會以「。」打回我? – Jadon
看起來你的解釋器在一個不同路徑的shell下運行。如果您在腳本中將其設置爲絕對路徑,或者將其完全取消設置,那麼是否解決了這個問題? – Phrogz