Sirviendo archivos estáticos en Sinatra… ¿con hermosas rutas?
-
27-10-2019 - |
Pregunta
Suponiendo que tengo una estructura de directorio similar a:
path_to_file/one/index.html
¿Cómo puedo configurar mi aplicación sinatra para que se enrute a
mysite.com/path_to_file/one/
y ¿tiene que renderizar el archivo mencionado anteriormente?path_to_file
siempre será el mismo, pero habrá diferentes carpetas (two
, three
, etc.) dentro de él.
Probé lo siguiente:
get '/path_to_file/:number' do
File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end
pero luego, p. ej.El archivo javascript vinculado desde index.html
no se procesa correctamente.
Solución
¡Entendido!
get '/path_to_file/:number/:file' do
File.read(File.join('path_to_file', "#{params[:number]}", "#{params[:file]}"))
end
get '/path_to_file/:number' do
File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end
El orden es importante, ya que si estos dos métodos se invierten, get '/path_to_file/:number'
se convierte en un superconjunto de get '/path_to_file/:number/:file'
.
Otros consejos
Solo una idea, pero puede configurar el software de su servidor, Apache
, nginx
, lo que sea que esté utilizando, para servir .css
y .js
y archivos de imagen desde una ubicación diferente.