2012-05-29 14 views
10

Para una pequeña aplicación de documentación para desarrolladores, me gustaría configurar una aplicación Sinatra para que solo sirva archivos HAML. Después de rutas para archivos e imágenes CSS, quiero una ruta que intente cargar un archivo HAML para cualquier ruta que solicite.¿Cómo puedo darle a Sinatra una ruta predeterminada?

Por ejemplo:

  • /index cargas views/index.haml, si es que existe
  • /this/page/might/exist cargas views/this/page/might/exist.haml, si es que existe

¿Cómo podría especificar esta ruta?

Respuesta

17

Parece que esto va a hacer que:

get '/*' do 
    viewname = params[:splat].first # eg "some/path/here" 

    if File.exist?("views/#{viewname}.haml") 
    haml :"#{viewname}" 

    else 
    "Nopers, I can't find it." 
    end 
end 
+1

que tenía que poner este 'después' de todas mis otras rutas, para asegurarse de que se procesan, de lo contrario la ruta comodín '/ *' bloquearía los demás rutas – Rots

+0

¿Qué sucede si obtiene un error de 500 en ese bloque? – nroose

+0

@nroose - un error 500 es algo que un servidor web devolvería; no puede suceder en Ruby. Si, por ejemplo, la llamada 'haml' provoca un error, tiene razón en que no lo rescataría y mi sitio devolvería un 500. Además, para ser más correcto, debería enviar un código de estado 404 en el encabezado cuando enviando el cuerpo "No puedo encontrarlo". Pero esto es solo un simple ejemplo. –

Cuestiones relacionadas