class Shaf::Settings

Constants

DEFAULTS
SETTINGS_FILE

Public Class Methods

env() click to toggle source
# File lib/shaf/settings.rb, line 19
def env
  (ENV['APP_ENV'] || ENV['RACK_ENV'] || 'development').to_sym
end
key?(key) click to toggle source
# File lib/shaf/settings.rb, line 23
def key?(key)
  settings.key? key
end
loaded?() click to toggle source
# File lib/shaf/settings.rb, line 31
def loaded?
  !!defined? @settings
end
to_h() click to toggle source
# File lib/shaf/settings.rb, line 27
def to_h
  settings.dup
end

Private Class Methods

define_getter(method) click to toggle source
# File lib/shaf/settings.rb, line 64
def define_getter(method)
  define_singleton_method(method) do
    @settings[method]
  end
end
define_setter(method) click to toggle source
# File lib/shaf/settings.rb, line 70
def define_setter(method)
  key = method[0..-2].to_sym
  define_singleton_method(method) do |arg|
    @settings[key] = arg
  end
end
load_config() click to toggle source
# File lib/shaf/settings.rb, line 42
def load_config
  @settings = DEFAULTS.dup
  config = Utils.read_config(SETTINGS_FILE, erb: true)
  @settings.merge! config.fetch(env, {})
end
method_missing(method, *args) click to toggle source
# File lib/shaf/settings.rb, line 48
def method_missing(method, *args)
  load_config unless loaded?

  if method.to_s.end_with? '='
    define_setter(method)
    public_send(method, args.first)
  else
    define_getter(method)
    public_send(method)
  end
end
respond_to_missing?(_method, _include_private = false) click to toggle source
# File lib/shaf/settings.rb, line 60
def respond_to_missing?(_method, _include_private = false)
  true
end
settings() click to toggle source
# File lib/shaf/settings.rb, line 37
def settings
  load_config unless loaded?
  @settings
end