#CGIInterpreter = "C:/ruby/bin/ruby.exe" # sous Windows à vérifier CGIInterpreter = `which ruby` # sous Mac ou Linux puts CGIInterpreter ## Serveur web en Ruby très simple basé sur WEBrick (http://www.webrick.org/) ## à lancer dans une console avec la commande : ruby simple_server.rb ## dans le répertoire où se trouvent les fichiers à servir ## On appelle ces cgi à partir d'un browser: http://localhost:3000/fichier.{cgi,html,rhtml} require 'webrick' require 'erb' # servlet qui montre les paramètres passés dans l'URL d'appel # exemple d'appel: http://localhost:3000/params?a=1&b=2 class ParamServlet < WEBrick::HTTPServlet::AbstractServlet def do_GET(req,resp) ENV['REQUEST_METHOD']=req.request_method # utilisés dans 'echo.rhtml' params=req.query resp.body = ERB.new(File.read("echo.rhtml")).result(binding) end alias do_POST do_GET # traiter le POST comme le GET end server = WEBrick::HTTPServer.new(:Port=>3000, # démarrer le serveur pour qu'il réponde sur le port 3000 :CGIInterpreter=>CGIInterpreter, :BindAddress => "localhost", # Restreint la réception de requêtes sur port local seulement (securite) # :Logger => WEBrick::Log.new("webrick.log", WEBrick::Log::DEBUG), # Des logs pour debogger le serveur et scripts :DirectoryIndex => ['index.html','index.php'] ) server.mount("/", WEBrick::HTTPServlet::FileHandler,".",{:FancyIndexing => true}) # servir .html, .rhtml et .cgi à partir du répertoire courant server.mount('/favicon.ico',nil) # ignorer les demandes de favicon.ico server.mount('/params',ParamServlet) # gérer la Servlet définie plus haut trap("INT") { server.shutdown } # on arrête le serveur avec ^C server.start # lancer le tout