Ruby on RailsリモートサーバーにHTTPリクエストを頻繁に送信する必要があるアプリケーションがあります。em-http-clientそして、毎回1つのクライアントを作成するのではなく、それら(複数のクライアントが存在する)をグローバルに保持したいと考えています。しかし、そのクライアント配列をどこに格納する必要があるのか、はっきりしていません。たとえば、セッションに保存しますか?または、RORは、すぐに使用できるシングルトンパターンのようなものを用意していますか?
1 に答える
0
まず、ruby自身がsingletonパターン能力を持つ。ドキュメントをご覧ください。
そのため、リクエスト間で永続的なインプロセス ストレージが必要です。
ではRubyOnRails、次のオプションを使用できます。
- グローバル変数 (悪い考えです。理由はわかりません)
- クラス 変数 (継承ツリー全体で共有されるため、悪い考えです)
- のインスタンス変数
metaclass - スレッド内ストレージ (
Thread.current[:whatever]) - 忘れていた別の場所
で初期化することをお勧めしconfig/initializers/your_initializer.rbます。
私は3番目のオプションを好みます。
これがあなたが探している素朴な実装です。
class EMClient
class << self
attr_accessor :pool
end
@pool = []
end
于 2013-01-21T06:27:45.907 に答える