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