b7618edc25f89f6015f03c37c37d8113cb6326f8
The before filter added in the previous commit never ran for static assets: Sinatra serves public_folder files (every JS/CSS/font/vendor file) through its own built-in shortcut, bypassing route and filter dispatch entirely — confirmed live, curl still got a fresh set-cookie on /js/map.js after that commit deployed, and the user hit the exact same logout on refresh again. A HAR from that retest shows the same clobbering pattern as before, just via a different response each time. SkipSessionWrite is a plain Rack middleware instead, positioned (via `use`, after `set :sessions`) inside Rack::Session::Cookie's own wrapping — it sees the same env static dispatch does, so every response is covered, not just Sinatra-routed ones.
MapTool
Table of Contents
A mapping application written in Ruby with Sinatra.
The project’s shape is still open — this is the initial scaffold.
Status
Early scaffold. The web application serves a vector map (MapLibre GL JS), with an online style and an optional offline style backed by a local PMTiles file, an animated RainViewer radar overlay, GPX upload/display (points and tracks, organized in folders), and a live position marker from a local GNSS receiver via gpsd.
Requirements
-
Ruby (see
.ruby-version) and Bundler
Getting started
bundle install
bundle exec puma -C config/puma.rb
Then open http://127.0.0.1:4567 in a browser.
Languages
JavaScript
48.7%
Ruby
43.6%
CSS
6%
HTML
1.2%
Dockerfile
0.5%