I have about 130 sinatra web apps running on a cluster of apache-passenger servers. All of these apps have been cloned from a generic codebase, then modified to have their own authentication key. The majority of apps do not have modifications aside from the authentication key. The advantage of separate apps is that I can very quickly make changes to a specific app without risking downtime for other apps.
However these authentication keys are essentially configuration. It's both inconvenient and intuitively wrong to store configuration in the codebase. Alternative options I have explored include storing configuration in a database and caching it in memory, per-app apache environment variables and a shared json file.
Are there better options? Any gotchas I missed?