Rails appplication wide settings
This is a very simple class to store and get application wide settings using Redis as storage.
SETUP
You need to have 'redis-rails' gem in your Gemfile. And also have a redis server running in your environment. You can create an initializer to create Redis instance. A simple initializer would be;
config/initializers/redis.rb
REDIS = Redis.new
lib/setting.rb
class Setting
DEFAULTS = {
setting_1: false
setting_2: 5
setting_3: "String"
}
def self.get(key)
(value = REDIS.get(key)) ? parse(key.to_sym,value) : DEFAULTS[key.to_sym]
end
def self.set(key, value)
REDIS.set(key.to_sym, value)
end
# Parse values by their default value's type. Redis only returns String
def self.parse(key, value)
klass = DEFAULTS[key].class
if klass == FalseClass || klass == TrueClass #Handle Boolean
return (value == "true")
elsif klass == Fixnum
value.to_i
elsif klass == Float
value.to_f
else
return value
end
end
end
USAGE
Modify DEFAULTS hash in setting.rb by your needs
Setting.set(:setting_1, true)
Setting.get(:setting_1) # true
PS; This is POC. might need some improvements
Written by Mehmet Beydogan
Related protips
1 Response
This approach is very slow on remote redis connection.
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Rails
Authors
Related Tags
#rails
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#