= Settingslogic Settingslogic is an old library of mine that I decided to go ahead and share with the world. It's nothing crazy or new. Just a simple solution to a simple problem. Settingslogic provides globally accessible settings via an ERB enabled YAML file using a singleton design pattern. It has been great for my apps, maybe you will enjoy it too. So here is my question to you.....is Settingslogic a great settings solution or the greatest? == Helpful links * <b>Documentation:</b> http://settingslogic.rubyforge.org * <b>Repository:</b> http://github.com/binarylogic/settingslogic/tree/master * <b>Bugs / feature suggestions:</b> http://binarylogic.lighthouseapp.com/projects/19028-settingslogic == Install and use sudo gem install settingslogic For rails, as a gem (recommended): # config/environment.rb config.gem "settingslogic" Or as a plugin (for older versions of rails) script/plugin install git://github.com/binarylogic/settingslogic.git == Create your settings By default Settingslogic tries to load config/application.yml. This is just a typical YAML file, notice ERB is allowed. # app/config/application.yml defaults: &defaults cool: saweet: nested settings neat_setting: 24 awesome_setting: <%= "Did you know 5 + 5 = " + (5 + 5) + "?" %> development: <<: *defaults neat_setting: 800 test: <<: *defaults production: <<: *defaults Take note of the environment namespacing. If your framework supports environments this is a good way to support environment specific settings. If you are using this in an area where there are no environment disregard the namespacing. It will work just fine without it. == Access your settings >> RAILS_ENV => "development" >> Settings.cool => "#<Settingslogic::Settings ... >" >> Settings.cool.saweet => "nested settings" >> Settings.neat_setting => 800 >> Settings.awesome_setting => "Did you know 5 + 5 = 10?" == Multiple settings settings1 = Settings.new(:settings1) # looks for config/settings1.yml settings2 = Settings.new("settings2.yaml") # looks for settings2.yml settings2 = Settings.new("/abs/path/settings2.yaml") # looks for /abs/path/settings2.yml settings3 = Settings.new(:some_setting => "some value") == Configure Configuration is optional. See Settingslogic::Config for more details. # config/initializers/settingslogic.rb Settingslogic::Config.configure do |config| config.file_name = :config # will look for config/config.yml config.file_name = "config" # will look for config config.file_name = "config.yaml" # will look for confg.yaml config.file_name = "/absolute/path/config.yml" # will look for /absolute/path/config.yml end Copyright (c) 2008 {Ben Johnson}[http://github.com/binarylogic] of {Binary Logic}[http://www.binarylogic.com], released under the MIT license