0.0
No commit activity in last 3 years
No release in over 3 years
Storing global and object's settings in DB. Simple for using in Rails applicatons.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 10.0
~> 3.3.0
~> 1.3.10

Runtime

>= 3.2.22
 Project Readme

CleanSettings

CleanSettings - it's simple and clean settings for your Rails project.

Requirements

For version 1.1.2:

  • Ruby 1.9.3
  • Rails 3.2.22

For version 1.1.1:

  • Ruby 2.0.0
  • Rails 4.0.0

Installation

Add this line to your application's Gemfile:

gem 'clean_settings'

And then execute:

$ bundle

Or install it yourself as:

$ gem install clean_settings

Run a generator:

rails g clean_settings:install

Usage

After installattion you will have a CleanSettings::Setting active_record model. If you want to extend this model you can use inheritance:

class Settings < CleanSettings::Setting

Default settings

If you need default settings for your Rails project you can add ruby file to config/initializers folder. Personally I prefer to name it as default_settings.rb. And fill this file with settings that you need:

Settings.defaults.project_name = "name"
Settings.defaults.project_key = 123456789
Settings.defaults.configs = { time: "UTC", currency_code: 980 }

After restart your project you will be able to get you defaults settings:

Settings.defaults.project_name # =>  "name"
Settings.project_name      # =>  "name"

Get all defaults settings in hash with indifferent access :

Settings.all_defaults  

Clearing default settings.

Settings.clear_defaults

Default settings are not saved to DB. Because they are 'defaults'. That's why when you clear default settings it will clear them only for current session. When your app is restarted, your default settings will be returned according your default_settings.rb file.

Global settings

For adding and getting settings that will be available anywhere in your project you can write like this:

# set
Settings.project_name = "name"

# get
Settings.project_name  # => "name"

If you prefer an array notation:

# set
Settings[:project_name] = "name"

# get
Settings[:project_name]  # => "name"

When you adding a setting with the name that was used for default setting you override default setting:

Settings.defaults[:name] = "default name"
Settings.name    # => "default name"

Settings.name = "another name"
Settings.name  # => "another name"

Get all global settings in hash with indifferent access

Settings.all_globals  
Get all settings

All settings (default and global) you can get through any of these methods:

Settings.all_settings
# or
Settings.fetch

Global settings will be merged with default settings.

Ownerable settings

Often you need specific settings for an object. With CleanSettings simple add a :has_settings method to you model:

class User < ActiveRecord::Base
  has_settings
end

Method has_settings has this option:

  • method_name. Default value is settings.

And use it:

@user = User.new
@user.settings.subscribe_to_notifications = true
@user.settings.subscribe_to_notifications # => true

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ashlinchak/clean_settings.