One suggestion: persistence usually means something has been persisted to a disk somewhere either locally or on a server. If the machine the code is running on suddenly powers off then the data will be on disk and can be retrieved when the machine powers on again.
Zeitwerk is a new code loader for Ruby. It is efficient, thread-safe, and matches Ruby semantics for constants.
Given a conventional file structure, Zeitwerk loads your project’s classes and modules on demand meaning you don’t need to write
require calls for your own files.
You have an additional issue if the table is large because the whole table is locked when you add/modify a column!
We use percona tools to mitigate this. It clones the table, makes the change to the cloned table, synchronises both tables, then renames the clone to be the current table and deletes the old one.
We tried several approaches to get a workable development environment and Docker’s NFS has been the most performant.
The trouble with running a Rails app in dev mode is there are lots of small files being reloaded regularly. We found it took 10+ seconds for some endpoints to finish loading. With NFS it was nearer 1–3 seconds.