問題のコード
Net::SSH.start('server name', 'user')
これは「非絶対ホーム」を返します。実際、「ユーザー」にはホームディレクトリがあります。提案されたアプローチの 1 つは、~/.ssh/config を IdentityFile へのフル パスで変更することでした。これで問題は解決しませんでした。
これのクレイジーな部分は、irb またはコンソールから呼び出された場合にコードが正常に機能することです。クラスメソッド内から(同じコードで)呼び出そうとすると、「非絶対ホーム」エラーが返されます。
「ユーザー」は、コマンドラインから問題なくサーバーに ssh することもできます。サーバーはUbuntuを実行しています。
アップデート
@Phrogz に感謝 - これに対する修正は、ENV['HOME'] を '/home/deploy' に設定することでした。しかし、なぜ $HOME が "." に設定されているのかわかりません。サーバー上。したがって、私または他の誰かがそれを理解するまで、「回答」なしでこの質問を残します. 手動で HOME を設定しなければならないというのは、適切な解決策というよりも「ハック」のように感じますが、うまくいきます。