Module: Veewee::Provider::Core::Helper::Web

Included in:
Box
Defined in:
lib/veewee/provider/core/helper/web.rb

Instance Method Summary collapse

Instance Method Details

#allow_for_http_request(filename, options) ⇒ Object

start in new thread



49
50
51
52
# File 'lib/veewee/provider/core/helper/web.rb', line 49

def allow_for_http_request(filename,options) # start in new thread
  s = server_for_http_request(filename,options.merge({:threaded => true}))
  Thread.new { s.start }
end

#server_for_http_request(filename, options = {:timeout => 10, :web_dir => "", :port => 7125, :threaded => false}) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/veewee/provider/core/helper/web.rb', line 54

def server_for_http_request(filename,options={:timeout => 10, :web_dir => "", :port => 7125, :threaded => false})
  # Calculate the OS equivalent of /dev/null , on windows this is NUL:
  # http://www.ruby-forum.com/topic/115472
  fn = test(?e, '/dev/null') ? '/dev/null' : 'NUL:'

  webrick_logger=WEBrick::Log.new(fn, WEBrick::Log::INFO)

  web_dir=options[:web_dir]
  filename=filename
  s= ::WEBrick::HTTPServer.new(
    :Port => options[:port],
    :Logger => webrick_logger,
    :AccessLog => webrick_logger
  )
  mount_filename = filename.start_with?('/') ? filename : "/#{filename}"
  env.logger.debug("mounting file #{mount_filename}")
  s.mount("#{mount_filename}", Veewee::Provider::Core::Helper::Servlet::FileServlet,File.join(web_dir,filename),ui,options[:threaded])
  trap("INT"){
    s.shutdown
    ui.info "Stopping webserver"
    exit
  }
  s
end

#wait_for_http_request(filename, options) ⇒ Object

original blocking



44
45
46
47
# File 'lib/veewee/provider/core/helper/web.rb', line 44

def wait_for_http_request(filename,options) # original blocking
  s = server_for_http_request(filename,options)
  s.start
end