module Settingson::Base::ClassMethods
Public Instance Methods
configure() { |_settings| ... }
click to toggle source
Settings.configure do |config|
config.cache.expires = 600 # default: 600 config.cache.enabled = true # default: true
end
# or
Settings.configure.cache.expires = 600 Settings.configure.cache.enabled = true
# File app/models/concerns/settingson/base.rb, line 16 def configure @_settings ||= ::Settingson::Config.new yield @_settings if block_given? @_settings end
defaults() { |__defaults| ... }
click to toggle source
Settings.defaults do |default|
default.server.host = 'host' default.server.port = 80
end
# File app/models/concerns/settingson/base.rb, line 26 def defaults @__defaults = Settingson::Store::Default.new( klass: self ) if block_given? Rails.application.config.after_initialize do yield @__defaults end end @__defaults end
delete_all()
click to toggle source
Custom hook for clear cache before delete_all
Calls superclass method
# File app/models/concerns/settingson/base.rb, line 53 def delete_all super Rails.cache.delete_matched(/#{self.configure.cache.namespace}/) end
from_hash(attributes)
click to toggle source
Settings.from_hash('smtp.host' => 'host') Settings.smtp.host
# File app/models/concerns/settingson/base.rb, line 40 def from_hash(attributes) case attributes when Hash attributes.map{|k,v| find_or_create_by(key: k).update!(value: v)} Rails.cache.clear true else raise ArgumentError, 'Hash required', caller end end
method_missing(symbol, *args)
click to toggle source
Calls superclass method
# File app/models/concerns/settingson/base.rb, line 58 def method_missing(symbol, *args) super rescue NameError, NoMethodError Settingson::Store::General.new(klass: self).send(symbol, *args) end