Class Rascut::Httpd
In: lib/rascut/httpd.rb
Parent: Object

Methods

config   logger   new   reload!   run   stop  

Included Modules

Utils

Constants

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

Attributes

command  [R] 

Public Class methods

[Source]

    # File lib/rascut/httpd.rb, line 17
17:     def initialize(command)
18:       @command = command
19:       @http_servet = 
20:       @threads = []
21:     end

Public Instance methods

[Source]

    # File lib/rascut/httpd.rb, line 60
60:     def config
61:       command.config
62:     end

[Source]

    # File lib/rascut/httpd.rb, line 64
64:     def logger
65:       config.logger
66:     end

[Source]

    # File lib/rascut/httpd.rb, line 68
68:     def reload!
69:       while t = @threads.pop
70:         t.run
71:       end
72:     end

[Source]

    # 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

[Source]

    # File lib/rascut/httpd.rb, line 55
55:     def stop
56:       # XXX
57:       # @http_server.stop
58:     end

[Validate]