server/lib/minicron/transport/server.rb
require 'thin'
require 'rack'
module Minicron
module Transport
# Used to mangage the web server minicron runs on
class Server
@server = nil
class << self
attr_accessor :server
end
# Starts the thin server
#
# @param host [String] the host e.g 0.0.0.0
# @param port [Integer]
# @param path [String] The absolute path to the server e.g /server
def self.start!(host, port, path)
return false if running?
@server = Thin::Server.new(host, port) do
map path do
require Minicron::REQUIRE_PATH + 'hub/app'
run Minicron::Hub::App.new
end
end
@server.start
true
end
# Stops the thin server if it's running
# @return [Boolean] whether the server was stopped or not
def self.stop!
return false unless running? && !@server.nil?
@server.stop
true
end
# Returns a bool based on whether
# @return [Boolean]
def self.running?
return false if @server.nil?
@server.running?
end
# Save doing this logic in every controller redirect
def self.get_prefix
Minicron.config['server']['path'] == '/' ? nil : Minicron.config['server']['path']
end
end
end
end