Class: Falcon::Capybara::Wrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/falcon/capybara/wrapper.rb

Instance Method Summary collapse

Constructor Details

#initializeWrapper

Returns a new instance of Wrapper.



29
30
31
32
33
34
# File 'lib/falcon/capybara/wrapper.rb', line 29

def initialize
  @job = nil
  
  @job_available = Async::IO::Notification.new
  @job_complete = Async::IO::Notification.new
end

Instance Method Details

#call(app, port, host) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/falcon/capybara/wrapper.rb', line 51

def call(app, port, host)
  require 'async/reactor'
  require 'falcon/server'
  
  Async::Reactor.run do |task|
    server = Falcon::Server.new(app, Async::IO::Endpoint.tcp(host, port))
    
    task.async do
      Async.logger.debug (self) {"Running server..."}
      server.run
    end
    
    while true
      Async.logger.debug (self) {"Waiting for job..."}
      @job_available.wait while @job.nil?
      
      Async.logger.debug (self) {"Running job #{@job}"}
      @job.call
      @job = nil
    end
  end
end

#closeObject



36
37
38
39
# File 'lib/falcon/capybara/wrapper.rb', line 36

def close
  @job_available.close
  @job_complete.close
end

#remote(&block) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/falcon/capybara/wrapper.rb', line 41

def remote(&block)
  @job = block
  @job_available.signal
  
  Async::Reactor.run do
    Async.logger.debug (self) {"Waiting for job completion..."}
    @job_complete.wait until @job.nil?
  end.wait
end