Net::SSH.start('server name', 'user')
これは、「非絶対的な家」を返します。実際、 'user'にはホームディレクトリがあります。提案されたアプローチの1つは、〜/ .ssh/configをIdentityFileへの完全なパスで変更することでした。これは問題を解決しませんでした。
これは、irbやconsoleを使って呼び出すとコードがうまく動作するということです。私たちが(同じコードを持つ)クラスメソッドの中から呼び出そうとすると、 "絶対的でない"エラーが返されます。
「ユーザー」は、問題なくコマンドライン経由でサーバーにsshすることもできます。サーバーはUbuntuを実行しています。 @Phrogzへ
UPDATE
おかげ - これのための修正は '/ホーム/デプロイ' にENV [ 'HOME']を設定しました。しかし、なぜ$ HOMEが "。"に設定されているのか分かりません。サーバー上でだから、私は誰か他の人がそれを理解するまで、この質問を「回答」なしで残しておきます。手動でホームを設定することは、適切な解決策よりも「ハック」のように感じますが、機能します。
'HOME'環境変数がありますか? 'echo $ HOME' – Phrogz
@Phrogz - irb、コンソール、コマンドラインから出力すると、パスが表示されます。しかし、クラス(home =%x [echo $ HOME])の変数(Rails_Root/lib/class_obj)に変数を設定すると、 "。 – Jadon
インタプリタが別のパスを持つシェルの下で実行されているようです。スクリプト内の絶対パスに設定するか、完全に設定を解除すると、修正されますか? – Phrogz