class Ki::RackCommand
When starting up, looks for /web extension classes loaded from ki-scripts and starts up a web site
class MyApp2 < Sinatra::Base get '/' do "MyApp2" end end KiCommand.register("/web/test", MyApp2)
@see DefaultRackHandler
Public Class Methods
build_app(path_class_list)
click to toggle source
# File lib/web/rack_cmd.rb, line 73 def RackCommand.build_app(path_class_list) Rack::Builder.new do path_class_list.each do |path, clazz| map(path) do run(clazz) end end end end
find_free_tcp_port()
click to toggle source
# File lib/web/rack_cmd.rb, line 83 def RackCommand.find_free_tcp_port socket = Socket.new(:INET, :STREAM, 0) socket.bind(Addrinfo.tcp("127.0.0.1", 0)) begin socket.local_address.ip_port ensure socket.close end end
wait_until_url_responds(url, &block)
click to toggle source
# File lib/web/rack_cmd.rb, line 93 def RackCommand.wait_until_url_responds(url, &block) try(20, 0.1) do response = Net::HTTP.get_response(URI(url)) if block block.call(response) else if (code = response.code) == "200" return response else raise "Response code from #{url} was #{code}" end end end end
web_ctx()
click to toggle source
# File lib/web/rack_cmd.rb, line 140 def self.web_ctx @@web_ctx end
Public Instance Methods
execute(ctx, args)
click to toggle source
# File lib/web/rack_cmd.rb, line 118 def execute(ctx, args) RackCommand.web_ctx.ki_home=ctx.ki_home @port = nil opts.parse(args) start_server end
help()
click to toggle source
# File lib/web/rack_cmd.rb, line 146 def help <<EOF ki-repo has a built in web server. ### Usage #{shell_command} - Starts Ki web server ### Parameters #{opts} EOF end
ki_app()
click to toggle source
# File lib/web/rack_cmd.rb, line 65 def ki_app extensions = KiCommand::KiExtensions.by_parent["/web"] if extensions.nil? || extensions.empty? raise "No /web extensions defined!" end RackCommand.build_app(extensions.map{|p,c| [p[4..-1], c]}) end
opts()
click to toggle source
# File lib/web/rack_cmd.rb, line 125 def opts OptionParser.new do |opts| opts.banner = "" opts.on("--handler HANDLER", "Use specified Rack Handler") do |v| handler(Object.const_get_full(v)) end opts.on("--development", "Development mode, resource urls are reloaded") do |v| RackCommand.web_ctx.development=true end opts.on("-p", "--port PORT", "Use specified port") do |v| @port = Integer(v) end end end
start_server()
click to toggle source
# File lib/web/rack_cmd.rb, line 108 def start_server @server = handler.new [:INT, :TERM].each { |sig| trap(sig) { stop_server } } @server.run(ki_app, :Port => (@port || 8290)) end
stop_server()
click to toggle source
# File lib/web/rack_cmd.rb, line 114 def stop_server @server.stop end