У меня есть приложение rails, которое должно общаться с парой серверов через ssh.Я использую библиотеку Net :: SSH , и она прекрасно работает.Однако я хотел бы иметь возможность кэшировать / хранить ssh-соединения между запросами (что-то вроде мультиплексирования OpenSSH).
Итак, я не могу хранить их в хранилище значений ключей как Memcached или Redis (потому что ssh-соединения не сериализуемы).
Я не хочу хранить их в сеансе , потому что они предназначены для использования всеми пользователями (и, кроме меня,думаю, что он также должен быть сериализуемым).
Мне удалось заставить это работать с переменными класса и константами инициализатора .Я знаю, что переменные класса не реплицируются между серверами (в производстве), и я вполне уверен, что константы инициализатора также не делают.Что-то вроде:
инициализатор:
SSH = {}
модель:
class Server
def connection
require 'net/ssh'
SSH[name] ||= Net::SSH.start(ip, "root", :password => password)
end
end
OpenSSH мультиплексирование было бы здорово, но я не уверен, если яможно было бы сделать это через библиотеку Net :: SSH ruby (я снова где-то хранил главное соединение).
Есть ли другие решения?Или, если нет, какой из них наименее злой из всех?