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