Class: Gitdocs::Server
- Inherits:
-
Object
- Object
- Gitdocs::Server
- Defined in:
- lib/gitdocs/server.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(manager, port = 8888, repositories) ⇒ Server
constructor
A new instance of Server.
- #start ⇒ Object
- #wait_for_start ⇒ Object
Constructor Details
#initialize(manager, port = 8888, repositories) ⇒ Server
Returns a new instance of Server.
9 10 11 12 13 14 |
# File 'lib/gitdocs/server.rb', line 9 def initialize(manager, port = 8888, repositories) @manager = manager @port = port.to_i @repositories = repositories @search = Gitdocs::Search.new(repositories) end |
Class Method Details
.start_and_wait(manager, override_port, repositories) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/gitdocs/server.rb', line 16 def self.start_and_wait(manager, override_port, repositories) return false unless manager.start_web_frontend web_port = override_port || manager.web_frontend_port server = Server.new(manager, web_port, repositories) server.start server.wait_for_start true end |
Instance Method Details
#start ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/gitdocs/server.rb', line 26 def start Gitdocs::SettingsApp.set :manager, @manager Gitdocs::BrowserApp.set :repositories, @repositories Thin::Logging.debug = @manager.debug Thin::Server.start('127.0.0.1', @port) do use Rack::Static, urls: %w(/css /js /img /doc), root: File.('../public', __FILE__) use Rack::MethodOverride map('/settings') { run Gitdocs::SettingsApp } map('/') { run Gitdocs::BrowserApp } end end |
#wait_for_start ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/gitdocs/server.rb', line 42 def wait_for_start wait_for_web_server = proc do i = 0 begin TCPSocket.open('127.0.0.1', @port).close @manager.log('Web server running!') rescue Errno::ECONNREFUSED sleep 0.2 i += 1 if i <= 20 @manager.log('Retrying web server loop...') retry else @manager.log('Web server failed to start') end end end EM.defer(wait_for_web_server) end |