storage -> Hash | nilRuby 3.2 から[permalink][rdoc][edit]storage=(hash)-
selfが表すファイバーの fiber storage を取得、設定します。fiber storage はファイバーごとに持てる記憶領域です。 Fiber.new で生成したファイバーには複製が引き継がれます。スレッドローカル変数がすべてのファイバーで共有されるのに対し、 fiber storage はファイバーを起点とする実行単位の中だけで共有されます。リクエスト ID やロガーの設定のように、暗黙のうちに引き回したい状態に向いています。
個々の値の読み書きには Fiber.[] と Fiber.[]= を使います。 storage が返すのは複製なので、返り値を変更しても fiber storage には反映されません。まだ fiber storage を持たない場合は nil を返します。
storage= は実験的な機能です。呼び出すと実験的な機能である旨の警告が出ます。警告は
-W:no-experimentalオプションで抑制できます。- [PARAM]
hash: - 設定する Hash を指定します。キーは Symbol で指定します。 nil を指定すると fiber storage を空にします。
- [RETURN]
- storage は 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] # => 1Fiber[:key] = 1 Fiber.current.storage = {other: 2} # 実験的な機能である旨の警告が出る p Fiber[:key] # => nil p Fiber[:other] # => 2[SEE_ALSO] Fiber.new
- [PARAM]