Class: Fiber
- Inherits:
-
Object
- Object
- Fiber
- Includes:
- FixBorkedKeys, Storage
- Defined in:
- lib/fiber/storage.rb,
lib/fiber/storage/version.rb
Defined Under Namespace
Modules: FixBorkedKeys, Storage
Constant Summary
Constants included from Storage
Class Method Summary collapse
-
.[](key) ⇒ Object
Get a value from the current fiber’s storage.
-
.[]=(key, value) ⇒ Object
Set a value in the current fiber’s storage.
-
.__borked_keys__ ⇒ Object
Whether the fiber storage has buggy keys.
Methods included from Storage
#__storage__, #initialize, #storage, #storage=
Methods included from FixBorkedKeys
Class Method Details
.[](key) ⇒ Object
Get a value from the current fiber’s storage.
46 47 48 49 50 |
# File 'lib/fiber/storage.rb', line 46 def self.[] key raise TypeError, "Key must be symbol!" unless key.is_a?(Symbol) self.current.__storage__[key] end |
.[]=(key, value) ⇒ Object
Set a value in the current fiber’s storage.
53 54 55 56 57 |
# File 'lib/fiber/storage.rb', line 53 def self.[]= key, value raise TypeError, "Key must be symbol!" unless key.is_a?(Symbol) self.current.__storage__[key] = value end |
.__borked_keys__ ⇒ Object
Whether the fiber storage has buggy keys. Unfortunately the original implementation of fiber storage was broken, this method detects the bug and is used to apply a fix.
60 61 62 63 64 65 66 |
# File 'lib/fiber/storage.rb', line 60 def self.__borked_keys__ !Fiber.new do key = :"#{self.object_id}.key" Fiber[key] = true Fiber[key] end.resume end |