= SettingsDB-Rails
SettingsDB provides an easy to use mechanism for keeping application settings
in your database. It also provides a namespacing mechanism to keep settings
from different areas separate, as well as a defaults option.
== Getting Started
Add settingsdb-rails to your Gemfile:
gem 'settingsdb-rails'
To install the model, migration, and defaults initializer:
rails generate settingsdb:install
rake db:migrate
This will create a settings
model, migration, and initializer file.
Now just reference settings in your code:
<% title Setting[:site_title] %>
To create a new setting just set its value:
Setting[:site_title] = "My Awesome Site!"
Non-qualified key operations use the :default
namespace, to set a key
in a particular namespace:
Setting[:myplugin, :site_title] = "My Awesome Plugin Site!"
To set application defaults, use SettingsDB::Defaults
:
SettingsDB::Defaults[:site_title] = 'Untitled'
SettingsDB::Defaults[:myplugin, :site_title] = 'Untitled Plugin'
Or use a block:
SettingsDB::Defaults.config do |c|
c[:site_title] = 'Untitled'
c[:myplugin, :site_title] = 'Untitled Plugin'
end
You can also store rails settings in the database to make your application
more configurable from the web interface. Add this to your +config/initializer/settingsdb.rb+ file:
Setting.where(:namespace => :rails).each do |setting|
if AppName::Application.config.respond_to?("#{setting.name}=")
AppName::Application.config.send("#{setting.name}", setting.value)
end
end
This assumes your appname is AppName, and that you keep rails settings separated in
it's own namespace (+:rails+, in this example)