我有一个需要频繁向远程服务器发送HTTP请求的Ruby on Rails
应用程序。我想保持那些(有多个客户端)全局em-http-client
,而不是每次创建一个客户端。但我不是很清楚我应该在哪里存储客户端数组?例如,存储在会话中?或者,ROR已经准备了开箱即用的单例模式之类的东西?
首先,ruby
本身具有singleton
模式能力。查看文档
所以你需要在请求之间持久的进程内存储。
在RubyOnRails
中,您可以使用以下选项:
- 全局变量(坏主意,我不知道为什么)
- class变量(坏主意,因为它们在整个继承树中共享)
-
实例
metaclass
变量 -
在线程存储(
Thread.current[:whatever]
) - 我忘记的地方
最好在config/initializers/your_initializer.rb
中初始化。
我更喜欢第三种选择。
这是你正在寻找的简单实现。
class EMClient
class << self
attr_accessor :pool
end
@pool = []
end