No commit activity in last 3 years
No release in over 3 years
Keep application settings in the database
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0

Runtime

~> 3.1.4
 Project Readme

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)