Class: Fiber

Inherits:
Object
  • Object
show all
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

Storage::VERSION

Class Method Summary collapse

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.

Raises:

  • (TypeError)


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.

Raises:

  • (TypeError)


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