我只有一个控制器和一些动作来处理与IMAP相关的不同功能。所以我的问题是我不想为每个动作创建一个单独的连接。例如,在一个动作我可以这样做(这是不实际的代码):在控制器动作之间共享一个Net :: IMAP连接
def index
@imap = Net::IMAP.new(server, 993, true)
@imap.login(user, password)
@imap.select("INBOX")
end
在同一个控制器内的另一个动作
再次,如果我需要做的IMAP那么相关的东西,我将不得不创建再次变量@imap
。
我正在使用IMAP第一次按照我的理解new
在每个动作中的方法将创建另一个连接到服务器,我听说谷歌有关于IMAP连接数量的连接限制(15)。
我不能序列化这个连接对象或将它存储在任何其他服务中,比如Redis或Memcached,或者缓存它,那么我该如何创建这个连接一次并使用它所有其他的动作,如果可能的话至少在同一个控制器内部动作?如果不可能,那么任何其他解决方案来处理这个问题?
当然,我可以从邮箱中缓存我需要的数据,但这无法帮助很多,因为有一些其他操作不需要数据,所以需要在邮箱中执行一些操作删除邮件,这样就需要连接实例。
是否要存储请求之间的连接?或者你只是想要一种方式来从控制器中的任何操作中打开新的连接? –