Class: FunApi::BlockDependency

Inherits:
Object
  • Object
show all
Defined in:
lib/funapi/dependency_wrapper.rb

Instance Method Summary collapse

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

#callObject



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

#cleanupObject



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