Mã trong câu hỏiLỗi "không tuyệt đối nhà" qua Net: SSH
Net::SSH.start('server name', 'user')
này trả về "nhà không tuyệt đối". 'Người dùng' trên thực tế không có thư mục chính. Một cách tiếp cận được đề xuất là sửa đổi ~/.ssh/config bằng đường dẫn đầy đủ đến IdentityFile. Điều này không giải quyết được vấn đề.
Phần điên rồ của điều này là mã hoạt động tốt nếu được gọi qua irb hoặc bảng điều khiển. Khoảnh khắc chúng ta thử gọi nó từ bên trong một phương thức lớp (với cùng mã) nó trả về lỗi "không tuyệt đối về nhà".
'Người dùng' cũng có thể ssh vào máy chủ qua dòng lệnh mà không gặp sự cố. Máy chủ đang chạy Ubuntu.
CẬP NHẬT
Nhờ @Phrogz - Việc sửa chữa này được thiết lập ENV [ 'HOME'] để '/ home/triển khai'. Tuy nhiên, tôi đã không tìm ra lý do tại sao $ HOME được đặt thành "." trên máy chủ. Vì vậy, tôi sẽ để lại câu hỏi này mà không có một "Trả lời" cho đến khi tôi, hoặc một người nào khác, con số đó ra. Việc đặt HOME theo cách thủ công cảm thấy giống như "hack" hơn là một giải pháp thích hợp, nhưng nó hoạt động.
Bạn có bộ biến môi trường 'HOME' không? 'echo $ HOME' – Phrogz
@Phrogz - nếu tôi xuất nó qua irb, console, dòng lệnh nó sẽ hiển thị một đường dẫn. Tuy nhiên, nếu tôi đặt nó là một biến trong lớp (home =% x [echo $ HOME]) chính nó (Rails_Root/lib/class_obj) thì nó sẽ trả về cho tôi một dấu "."? – Jadon
Có vẻ như thông dịch viên của bạn đang chạy dưới một trình bao có đường dẫn khác.Nếu bạn đặt nó thành một đường dẫn tuyệt đối trong tập lệnh của bạn, hoặc không đặt nó hoàn toàn, điều đó có khắc phục được nó không? – Phrogz