Как я могу дать Sinatra универсальный маршрут по умолчанию?

Для небольшого приложения документации для разработчиков я хотел бы настроить приложение Sinatra, чтобы просто обслуживать файлы HAML. После маршрутов для файлов и изображений CSS мне нужен маршрут, который пытается загрузить файл HAML по любому пути, который вы запрашиваете.

Например:

  • /index загружает views/index.haml, если он существует
  • /this/page/might/exist загружает views/this/page/might/exist.haml, если он существует

Как мне указать этот маршрут?

Ответ 1

Похоже, это сделает это:

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