prop/.gitignore
Graham McIntire a24ce027f4 Fix /weather 500 on cold cache, untrack k8s secret
The /weather LiveView was timing out on pod restart because
latest_weather_grid/1 ran load_weather_grid_from_db/1 synchronously on
cache miss — that query reads 176k hrrr_profiles rows with two huge
JSONB columns (profile array + duct_characteristics), and JSONB
decoding blocked the LiveView process past the 15-second pool
ownership timeout.

On cache miss latest_weather_grid/1 now returns empty immediately and
kicks off a deduped background fill through GridCache.claim_fill/1 (a
per-valid_time ETS lock so N concurrent mounts after restart don't each
fire the slow query). When the fill completes it broadcasts
weather:updated, and the handle_info in WeatherMapLive hits the warm
cache and pushes rows over the socket.

Added load_weather_grid/1 as a synchronous sibling for tests and any
caller that genuinely needs inline data. Tests updated to use it and
to clear GridCache in setup so ETS state doesn't leak between cases.

Also untrack k8s/secret.yaml and add both it and k8s/*-secret.yaml to
.gitignore — those manifests hold plaintext SMTP and database
credentials that should not live in the repo. Secrets already in git
history should be rotated separately.
2026-04-12 13:56:59 -05:00

55 lines
1 KiB
Text

# The directory Mix will write compiled artifacts to.
/_build/
# Environment variables (secrets)
.envrc
# If you run "mix test --cover", coverage assets end up here.
/cover/
# The directory Mix downloads your dependencies sources to.
/deps/
# Where 3rd-party dependencies like PHX://priv/static/
# temporary files for e.g. tests
/tmp/
# Ignore package tarball (built via "mix hex.build").
microwaveprop-*.tar
# Ignore assets that are produced by build tools.
/priv/static/assets/
# Ignore digested assets cache.
/priv/static/cache_manifest.json
# In case you use Node.js/Tailwind standalone binary
/assets/node_modules/
# Ignore database dumps
*.sql
*.psql
*.dump
# Dotenv files
.env
.env.*
# Kubernetes secret manifests (contain plaintext credentials)
/k8s/secret.yaml
/k8s/*-secret.yaml
# Trained ML model weights — tracked in git for Docker builds
# GRIB2 test fixtures (large binary files, downloaded on-demand)
/test/fixtures/grib2/*.grib2
# Dialyzer PLT files
/priv/plts/
# Git worktrees
/.worktrees/
# OS files
.DS_Store
Thumbs.db