Class | Rascut::Httpd |
In: |
lib/rascut/httpd.rb
|
Parent: | Object |
INDEX | = | <<-EOF <html> <head> <title>Rascut</title> <style> * { margin:0; padding:0; } #content { text-align:center; } </style> <script type="text/javascript" src="/js/swfobject.js"></script> <!--__RELOAD__--> </head> <body> <div id="content"></div> <script type="text/javascript"> var so = __SWFOBJECT__; window.onload = function() { __SWF_VARS__ so.addVariable('rascut', 'true'); so.addParam('allowFullScreen', 'true'); so.addParam('allowScriptAccess', 'always'); so.write("content"); } </script> </body> </html> EOF |
RELOAD_SCRIPT | = | <<-EOF <script type="text/javascript"> var Rascut = new Object; Rascut.xhr = (function() { if (typeof XMLHttpRequest != 'undefined') { return new XMLHttpRequest(); } else { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } })(); Rascut.reloadObserver = function() { var x = Rascut.xhr; x.open('GET', '/reload?' + (new Date()).getTime(), true); x.onreadystatechange = function() { try { if (x.readyState == 4) { if (x.status == 200 && Number(x.responseText) == 1) { // thanks os0x! so.attributes.swf = so.attributes.swf + '+'; so.write('content'); Rascut.reloadObserver(); } else { setTimeout(Rascut.reloadObserver, 5000); } } } catch(e) { setTimeout(Rascut.reloadObserver, 5000); } } x.send(null); } Rascut.swf = function() { return document.getElementById('idswf'); } Rascut.reloadObserver(); </script> EOF |
command | [R] |
# File lib/rascut/httpd.rb, line 17 17: def initialize(command) 18: @command = command 19: @http_servet = 20: @threads = [] 21: end
# File lib/rascut/httpd.rb, line 68 68: def reload! 69: while t = @threads.pop 70: t.run 71: end 72: end
# File lib/rascut/httpd.rb, line 24 24: def run 25: swf_path = command.root.to_s 26: logger.debug "swf_path: #{swf_path}" 27: vendor = Pathname.new(__FILE__).parent.parent.parent.join('vendor') 28: logger.debug "vendor_path: #{vendor}" 29: 30: file_mappings = [ 31: ['/js/swfobject.js', vendor.join('js/swfobject.js').to_s], 32: ['/swf', swf_path] 33: ] 34: file_mappings.concat(config_url_mapping) if config[:mapping] 35: logger.debug 'url mappings: ' + file_mappings.inspect 36: 37: port = config[:port] || 3001 38: host = config[:bind_address] || '0.0.0.0' 39: 40: reload = reload_handler 41: index = index_handler 42: 43: @http_server = Mongrel::HttpServer.new(host, port) 44: file_mappings.each do |mapping| 45: @http_server.register(mapping[0], Mongrel::DirHandler.new(mapping[1])) 46: end 47: @http_server.register('/proxy', proxy_handler) 48: @http_server.register('/save', save_handler) 49: @http_server.register('/reload', reload_handler) 50: @http_server.register('/', index_handler) 51: @http_server.run 52: logger.info "Start Mongrel: http://#{host}:#{port}/" 53: end