You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**`FreeZipcodeData::Runner`** - CLI entry point; parses args via Optimist, orchestrates the full pipeline
58
58
-**`FreeZipcodeData::DataSource`** - Downloads and extracts GeoNames zip files, prepares CSV with headers
59
59
-**`SqliteRam`** - Wraps SQLite3; works entirely in-memory then saves to disk via `SQLite3::Backup`
60
60
-**`FreeZipcodeData::DbTable`** - Base class for all table classes; provides progress bar, SQL helpers, and country lookup from `country_lookup_table.yml`
61
-
-**`CountryTable`/`StateTable`/`CountyTable`/`ZipcodeTable`** - Kiba destinations; each has `build` (creates schema + indexes) and `write` (inserts rows, swallows duplicate constraint violations)
61
+
-**`FreeZipcodeData::CountryTable`/`StateTable`/`CountyTable`/`ZipcodeTable`** - Kiba destinations; each has `build` (creates schema + indexes) and `write` (inserts rows, swallows duplicate constraint violations)
62
62
-**`ETL::FreeZipcodeDataJob`** - Configures the Kiba pipeline with one source and four destinations
63
63
-**`CsvSource`** - Kiba-compatible CSV reader
64
64
65
65
### Singletons
66
66
67
-
`Options` and `Logger` are singletons (via Ruby's `Singleton` module). `Runner`uses a manual singleton pattern.
67
+
`Options` and `Logger` are singletons (via Ruby's `Singleton` module). `Runner`has an `.instance` convenience class method (returns `new` each time, not cached).
68
68
69
69
## Configuration
70
70
71
-
-`.ruby-version`: 3.0.2
71
+
-`.ruby-version`: 3.4.8
72
72
- Bundle path: `vendor/bundle` (binstubs in `stubs/`)
0 commit comments