I tried to make my own small server and mongrel came in handy!
Some things i covered:
- making the server stop on ctr+c
- ignoring favicon requests
- using the local ip (192.168.X.X) or localhost
- parsing the request parameters (?aaa=bbb&…) to a hash
The rest is up to you!
Stick your code into process, then run ‘ruby server.rb’ and your done 🙂
#server.rb
require 'mongrel'
require 'yaml'
module SimpleServer
class SimpleHandler < Mongrel::HttpHandler
def process(request, response)
return if request.params['REQUEST_URI']=='/favicon.ico'
params = extract_params request
puts "Called with:"
puts params.to_yaml
response.start(200) do |head,out|
head["Content-Type"] = "text/plain"
out.write("HELLO WORLD!")
end
end
def extract_params request
params = request.params['QUERY_STRING']
return {} if !params
arr = params.split('&')
hash = {}
arr.each do |value|
break if !value
temp = value.split('=')
hash[temp[0]]= temp[1]
end
hash
end
end
#SERVER
def self.start
require 'socket'
#or use 'localhost' if u do not want to be callable from outside
host = IPSocket.getaddress(Socket.gethostname)
config = Mongrel::Configurator.new :host => host, :port => 3000 do
listener {uri "/", :handler => SimpleHandler.new}
trap("INT") { stop }
run
end
#show what we are running
puts "Running at"
puts config.defaults.to_yaml
config.join
end
end
SimpleServer::start