You've got a script. It's got some settings. Some settings are for this module, some are for that module. Most of them don't change. Except on your laptop, where the paths are different. Or when you're in production mode. Or when you're testing from the command line. "" So, Consigliere of mine, I think you should tell your Don what everyone knows. "" -- Don Corleone Configliere's wise counsel takes care of these problems. Design goals: * *Don't go outside the family*. Requires almost no external resources and almost no code in your script. * *Don't mess with my crew*. Settings for a model over here can be done independently of settings for a model over there, and don't require asking the boss to set something up. * *Be willing to sit down with the Five Families*. Takes settings from (at your option): ** Pre-defined defaults from constants ** Simple config files ** Environment variables ** Commandline options ** Ruby block called when all other options are in place * *Code of Silence*. Most commandline parsers force you to pre-define all your parameters in a centralized and wordy syntax. In configliere, you pre-define nothing -- commandline parameters map directly to values in the Configliere hash. * *Can hide your assets*. Rather than storing passwords and API keys in plain sight, configliere has a protection racket that can obscure values when stored to disk. fuhgeddaboudit.