storage -> Hash | nilRuby 3.2 から[permalink][rdoc][edit]-
selfが表すファイバーの fiber storage を取得します。fiber storage はファイバーごとに持てる記憶領域です。 Fiber.new で生成したファイバーには複製が引き継がれます。スレッドローカル変数がすべてのファイバーで共有されるのに対し、 fiber storage はファイバーを起点とする実行単位の中だけで共有されます。リクエスト ID やロガーの設定のように、暗黙のうちに引き回したい状態に向いています。
個々の値の読み書きには Fiber.[] と Fiber.[]= を使います。 storage が返すのは複製なので、返り値を変更しても fiber storage には反映されません。まだ fiber storage を持たない場合は nil を返します。
- [RETURN]
- fiber storage の複製を返します。
- [EXCEPTION]
ArgumentError: - Fiber.current 以外のファイバーに対して呼んだ場合に発生します。
Fiber[:key] = 1 p Fiber.current.storage # => {:key=>1} # 返り値は複製なので、変更しても fiber storage には影響しない Fiber.current.storage[:key] = 2 p Fiber[:key] # => 1[SEE_ALSO] Fiber.new, Fiber#storage=