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