Has instalado Ruby 1.8. Quieres realizar algunos desarrollos relacionados con la Web. Has oído hablar de algo llamado WEBrick que viene como estándar en Ruby. Has buscado documentación en google. Como mucho lo que has encontrado son los artículos de Eric Hodel. Has pensado "¿Dónde está la documentación?". Te sientes animoso y piensas "Usa los fuentes, Luke". Y te das cuenta de que eres un novato en Ruby y el código fuente se parece a Yoda haciendo Yoga mientras canta "que la fuerza está contigo". Luego, has pensado que la fuerza no va estar contigo por al menos otra semana. Si estabas impaciente porque quieres empezar ahora y que la fuerza la practicarás mientras haces pruebas. Puedes gritar finalmente, "lo tengo".
Espero que encuentres este artículo adecuado para empezar y que te sirva de compañía durante tu viaje hacia WEBrick. Hay también una sección de referencia a la que acudir cuando estés perdido o inseguro o ambas cosas.
FileHandlerDefaultFileHandlerCGIHandlerERBHandlerProcHandlerHTTPRequestHTTPUtils::FormDataHTTPResponseCookieHTTPStatus![]() | Esta documentación hace referencia a la versión de WEBrick que se distribuye con Ruby 1.8.1. |
WEBrick es una librería que incluye un servidor HTTP escrita por TAKAHASHI Masayoshi, GOTOU Yuuzou junto con modificaciones proporcionadas por diferentes desarrolladores y usuarios de Ruby. Comenzó a partir de un artículo titulado "Internet programming with Ruby" en una revista en red japonesa de ingeniería "OpenDesing". Y ahora, es parte de la librería estándar de Ruby.
WEBrick se puede utilizar para crear un servidor o una aplicación HTTP. También se puede utilizar como base para construir infraestructuras para aplicaciones Web como IOWA o Tofu entre otras.
También se puede utilizar para construir servidores no HTTP, como por ejemplo el servidor de horario que se encuentra en la página de WEBrick, aunque esto sería una pena ya que se pierde el soporte al protocolo HTTP que proporciona.
En el paradigma de aplicaciones Web, WEBrick ocupa un nivel bastante bajo. Para comenzar no tiene la noción de "aplicación Web". También le es desconocido el concepto de "Sesión de usuario."
Todo lo que conoce son servlets. En cuanto a lo que le concierne, cada servlet es independiente del resto. Si tiene que haber diferentes servlets trabajando juntos para proporcionar una aplicación Web, ¿adivina quién tiene que proporcionar el pegamento?. ¡Tu! Si necesitas estas funcionalidades , te recomiendo que utilices IOWA, Tofu u otros. Otras personas se han molestado en proporcionar capas adicionales sobre WEBrick, no tienes que reinventar la rueda.
#Una utilización simple de WEBrick
require 'webrick'
server = WEBrick::HTTPServer.new
#
# Aquí habría que montar los manejadores
# más adelante se explica lo que son los manejadores
#
# recogemos las señales para llamar a la rutina de cierre limpiamente
['INT','TERM'].each do |signal|
trap( signal ){ server.shutdown }
end
server.start
El ejemplo anterior arrancará WEBrick con una configuración por defecto, incluyendo la que dice que debe leer del puerto 80. Ahora intentaremos modificar algunos parámetros de la configuración:
Vamos a leer del puerto 8080 en vez del puerto 80 (el resto del documento utilizará el puerto 8080 como puerto de lectura por defecto dado que el puerto 80 está reservado para el servidor HTTP Apache que se ejecuta en mi máquina).
Los fichero a servir se encuentran en /var/www.
HTTPServer. Dado que
en el resto del documento vamos a modificar la configuración y crear
objetos de la clase HTTPServer con frecuencia, facilitaremos este proceso definiendo un método que lo haga todo.
require 'webrick'
# importamos el espacio de nombre
# para no tener que teclear WEBrick::
include WEBrick
def start_webrick( config={} )
#Siempre vamos a leer el puerto 8080
config.update( :Port=>8080 )
server= HTTPServer.new( config )
yield server if block_given?
['INT','TERM'].each do |signal|
trap( signal ) { server.shutdown }
end
server.start
end #start_webrick
start_webrick( :DocumentRoot=> '/var/www' )
Resultado:
[jfglez@localhost jfglez]$ w3m -dump http://localhost:8080 Index of / Name Last modified Size ------------------------------------------------------------------------------- Parent Directory 2005/02/09 21:37 - cgi-bin/ 2005/02/10 18:54 - error/ 2005/02/09 21:15 - html/ 2005/02/09 21:53 - icons/ 2005/02/09 21:15 - perl/ 2005/02/09 21:37 - ------------------------------------------------------------------------------- WEBrick/1.3.1 (Ruby/1.8.1/2003-12-25) at localhost:8080
| Siguiente | ||
| Montado de Servlets |