al-quran.reflectslight.io/packages/ruby/server/lib/server.rb
Robert bf1558eeb0
Add packages/ruby/server/ (#132)
### Summary

The `server` package implements a static file web server intended to be 
used during development. The goal is to have it as close to a production
environment as possible. Not there yet. This is the first step.
2023-06-25 21:03:07 -03:00

47 lines
849 B
Ruby

# frozen_string_literal: true
class Server
require "rack"
require_relative "server/puma"
require_relative "server/dir"
def self.app(path)
Rack::Builder.app do
run Server::Dir.new(path)
end
end
def self.for_dir(path, options = {})
new(app(path), options)
end
def initialize(app, options = {})
@app = app
@options = default_options.merge!(options)
@events = Puma::Events.new
@server = Puma::Server.new(@app, @events, @options)
end
def start
@server.binder.parse(@options[:binds])
@server.run
end
def stop
@server.stop
end
private
def default_options
{
tcp_host: "127.0.0.1",
tcp_port: 7777,
binds: ["tcp://127.0.0.1:7777"],
supported_http_methods: %w[GET HEAD],
min_threads: 1,
max_threads: 5,
workers: 1
}
end
end