Class: FunApi::BlockDependency
- Inherits:
-
Object
- Object
- FunApi::BlockDependency
- Defined in:
- lib/funapi/dependency_wrapper.rb
Instance Method Summary collapse
- #call ⇒ Object
- #cleanup ⇒ Object
-
#initialize(block) ⇒ BlockDependency
constructor
A new instance of BlockDependency.
Constructor Details
#initialize(block) ⇒ BlockDependency
Returns a new instance of BlockDependency.
37 38 39 40 41 |
# File 'lib/funapi/dependency_wrapper.rb', line 37 def initialize(block) @block = block @fiber = nil @resource = nil end |
Instance Method Details
#call ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/funapi/dependency_wrapper.rb', line 43 def call return @resource if @fiber @fiber = Fiber.new do result = nil @block.call(proc { |resource| result = resource Fiber.yield resource }) result end @resource = @fiber.resume @resource end |
#cleanup ⇒ Object
59 60 61 62 63 64 |
# File 'lib/funapi/dependency_wrapper.rb', line 59 def cleanup return unless @fiber @fiber.resume if @fiber.alive? rescue FiberError end |