有问题的代码
Net::SSH.start('server name', 'user')
这将返回“非绝对的家”。“用户”实际上确实有一个主目录。一种建议的方法是使用 IdentityFile 的完整路径修改 ~/.ssh/config。这并没有解决问题。
最疯狂的部分是,如果通过 irb 或控制台调用,代码可以正常工作。当我们尝试从类方法(使用相同的代码)中调用它时,它会返回“非绝对主页”错误。
“用户”也可以毫无问题地通过命令行 ssh 进入服务器。服务器正在运行 Ubuntu。
更新
感谢@Phrogz - 解决此问题的方法是将 ENV['HOME'] 设置为 '/home/deploy'。但是,我还没有弄清楚为什么 $HOME 被设置为“。” 在服务器上。所以,在我或其他人弄明白之前,我会在没有“答案”的情况下留下这个问题。不得不手动设置 HOME 感觉更像是“黑客”而不是正确的解决方案,但它确实有效。