diff --git a/diversipub.gemspec b/diversipub.gemspec index a931e8e..4abf3ca 100644 --- a/diversipub.gemspec +++ b/diversipub.gemspec @@ -43,6 +43,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency 'rack', '~> 2.2', '>= 2.2.7' spec.add_runtime_dependency 'sinatra', '~> 3.0', '>= 3.0.6' + spec.add_runtime_dependency 'webrick', '~> 1.8', '>= 1.8.1' spec.add_development_dependency 'pry', '~> 0.14' spec.add_development_dependency 'rake', '~> 13.0' diff --git a/lib/diversipub.rb b/lib/diversipub.rb index 88a443a..5fe8eb3 100644 --- a/lib/diversipub.rb +++ b/lib/diversipub.rb @@ -2,6 +2,7 @@ require 'rack' require 'sinatra/base' +require 'webrick' require_relative 'diversipub/main' require_relative 'diversipub/rack_app' diff --git a/lib/diversipub/main.rb b/lib/diversipub/main.rb index 0f0f218..74a9ca3 100644 --- a/lib/diversipub/main.rb +++ b/lib/diversipub/main.rb @@ -24,13 +24,15 @@ module Diversipub p stdin p stdout p stderr - sleep 1 while @running + + webrick_thread.join true end def finish puts 'finishing' - @running = false + webrick.shutdown + nil end private @@ -50,5 +52,30 @@ module Diversipub [String(key).freeze, String(value).freeze] end.freeze end + + def webrick_thread + @webrick_thread ||= Thread.start { webrick.start } + end + + def webrick + @webrick ||= WEBrick::HTTPServer.new(webrick_options).tap do |webrick| + webrick.mount '/', Rack::Handler::WEBrick, rack_app + end + end + + def webrick_options + @webrick_options ||= { + BindAddress: 'localhost', + Port: 8080, + }.freeze + end + + def rack_app + @rack_app ||= RackApp.new sinatra_app + end + + def sinatra_app + @sinatra_app ||= SinatraApp.new self + end end end diff --git a/lib/diversipub/sinatra_app.rb b/lib/diversipub/sinatra_app.rb index 8434ec1..886186e 100644 --- a/lib/diversipub/sinatra_app.rb +++ b/lib/diversipub/sinatra_app.rb @@ -19,5 +19,9 @@ module Diversipub # Disable default Sinatra servers & middleware. alias new new! end + + get '/' do + 'Hello, World!' + end end end