我有一个 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 库来做到这一点(我回到将主连接存储在某处)。
还有其他解决方案吗?或者如果不是,哪一个是最不邪恶的?