The in-memory solution would be the easiest I suppose, but if volatility is a problem then I wouldn't suggest it.
How about serializing a settings object to the database using YAML? Keep the object in memory and then drop it to the database when saved. Just use the rows to hold revisions of that object. Of course, with ActiveRecord, that's arbitrary...you could/should just create a model and do it that way probably.
The best solution is probably to use environment.rb, but since you don't want to hardcode anything, I think maybe the DB is the way to go.
--Jeremy