class Adsf::Server
Public Class Methods
new(root:, live: false, index_filenames: ['index.html'], host: '127.0.0.1', port: 3000, handler: nil)
click to toggle source
# File lib/adsf/server.rb, line 5 def initialize(root:, live: false, index_filenames: ['index.html'], host: '127.0.0.1', port: 3000, handler: nil) @root = root @live = live @index_filenames = index_filenames @host = host @port = port @handler = handler @q = SizedQueue.new(1) end
Public Instance Methods
run()
click to toggle source
# File lib/adsf/server.rb, line 16 def run handler = build_handler app = build_app(root: @root, index_filenames: @index_filenames) start_watcher if @live url = "http://#{@host}:#{@port}/" puts "View the site at #{url}" handler.run(app, Host: @host, Port: @port) do |server| wait_for_stop_async(server) end end
stop()
click to toggle source
# File lib/adsf/server.rb, line 29 def stop @q << true end
Private Instance Methods
build_app(root:, index_filenames:)
click to toggle source
# File lib/adsf/server.rb, line 50 def build_app(root:, index_filenames:) is_live = @live ::Rack::Builder.new do use ::Rack::CommonLogger use ::Rack::ShowExceptions use ::Rack::Lint use ::Rack::Head use Adsf::Rack::Caching use Adsf::Rack::CORS use Adsf::Rack::IndexFileFinder, root: root, index_filenames: index_filenames if is_live require 'adsf/live' use ::Rack::LiveReload, no_swf: true, source: :vendored end run ::Rack::Files.new(root) end.to_app end
build_handler()
click to toggle source
# File lib/adsf/server.rb, line 73 def build_handler if @handler ::Rackup::Handler.get(@handler) else ::Rackup::Handler.default end end
start_watcher()
click to toggle source
# File lib/adsf/server.rb, line 35 def start_watcher require 'adsf/live' ::Adsf::Live::Watcher.new(root_dir: File.absolute_path(@root)).tap(&:start) end
wait_for_stop(server)
click to toggle source
# File lib/adsf/server.rb, line 45 def wait_for_stop(server) @q.pop server.stop end
wait_for_stop_async(server)
click to toggle source
# File lib/adsf/server.rb, line 41 def wait_for_stop_async(server) Thread.new { wait_for_stop(server) } end