Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
## relauncher.rb (run this) require 'jruby/vm' require 'socket' # listen on 3000 server = TCPServer.new('localhost', 3000) # prepare initial mtime and child vm mtime = File.mtime('server.rb') vm = JRuby::VM.spawn('server.rb') vm << JRuby::VM_ID while true # accept connections sock = server.accept # check mtime and reload VM if changed new_mtime = File.mtime('server.rb') if mtime != new_mtime mtime = new_mtime vm << 'quit' t = Time.now vm = JRuby::VM.spawn('server.rb') vm << JRuby::VM_ID puts "reloaded in #{Time.now - t} seconds" end # handle request in child vm request = sock.gets("\r\n\r\n") vm << request response = JRuby::VM.get_message sock.write(response) sock.close end ## server.rb (touch to cause reload on next request) parent_id = JRuby::VM.get_message header = "HTTP/1.1 200 OK\r\nDate: Mon, 01 Dec 2008 01:52:09 GMT\r\nContent-Type: text/html\r\nConnection: close\r\n" while true request = JRuby::VM.get_message break if request == 'quit' # just dumping request back at the moment response = "#{header}Content-Length: #{11 + request.length}\r\n\r\n<pre>#{request}</pre>" JRuby::VM.send_message(parent_id, response) end
This paste will be private.
From the Design Piracy series on my blog: