Class: Vario::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/vario/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/vario/config.rb', line 7

def initialize
  @logger               = Logger.new(STDOUT)
  @logger.level         = Logger::INFO
  @keys = {}
  @base_controller = '::ApplicationController'
  @settable_types = {}
  @settable_settings = {}
  @settable_type = nil
  @current_settable = nil
  @admin_layout = 'application'
  @show_group_if = {}
end

Instance Attribute Details

#admin_layoutObject

Returns the value of attribute admin_layout.



5
6
7
# File 'lib/vario/config.rb', line 5

def admin_layout
  @admin_layout
end

#base_controllerObject

Returns the value of attribute base_controller.



5
6
7
# File 'lib/vario/config.rb', line 5

def base_controller
  @base_controller
end

#current_settableObject



79
80
81
# File 'lib/vario/config.rb', line 79

def current_settable
  @current_settable.is_a?(Proc) ? instance_exec(&@current_settable) : @current_settable
end

#keysObject (readonly)

Returns the value of attribute keys.



4
5
6
# File 'lib/vario/config.rb', line 4

def keys
  @keys
end

#loggerObject

Config: logger [Object].



75
76
77
# File 'lib/vario/config.rb', line 75

def logger
  @logger.is_a?(Proc) ? instance_exec(&@logger) : @logger
end

#settable_settingsObject (readonly)

Returns the value of attribute settable_settings.



4
5
6
# File 'lib/vario/config.rb', line 4

def settable_settings
  @settable_settings
end

#settable_typesObject (readonly)

Returns the value of attribute settable_types.



4
5
6
# File 'lib/vario/config.rb', line 4

def settable_types
  @settable_types
end

Instance Method Details

#create_on_request(value, options = {}) ⇒ Object

If true, a new setting will be saved for settings that do not exist.



59
60
61
62
63
64
# File 'lib/vario/config.rb', line 59

def create_on_request(value, options = {})
  settable_type = options.delete(:settable_type) || @settable_type
  settable_types[settable_type] ||= {}
  settable_types[settable_type][:create_on_request] = value
  settable_types[settable_type][:default_keys] = options[:with_keys]
end

#create_on_request?(settable_type) ⇒ Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/vario/config.rb', line 91

def create_on_request?(settable_type)
  settable_types.dig(settable_type, :create_on_request)
end

#default_keys?(settable_type) ⇒ Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/vario/config.rb', line 99

def default_keys?(settable_type)
  settable_types.dig(settable_type, :default_keys) || []
end

#for_settable_type(settable_type) {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Vario::Config)

    the object that the method was called on



66
67
68
69
70
# File 'lib/vario/config.rb', line 66

def for_settable_type(settable_type)
  @settable_type = settable_type
  yield self
  @settable_type = nil
end

#key(name, options) ⇒ Object

Config setters

Raises:

  • (ArgumentError)


22
23
24
25
26
27
# File 'lib/vario/config.rb', line 22

def key(name, options)
  options.symbolize_keys!
  raise ArgumentError, 'name is required' unless options.keys.include?(:name)
  raise ArgumentError, 'type is required' unless options.keys.include?(:type)
  keys[name.to_s] = options
end

#key_data_for(key) ⇒ Object



87
88
89
# File 'lib/vario/config.rb', line 87

def key_data_for(key)
  keys[key.to_s] || { name: key, type: :string, description: 'Not configured in initializer' }
end

#pre_create_settings(settable) ⇒ Object



103
104
105
106
107
108
109
110
# File 'lib/vario/config.rb', line 103

def pre_create_settings(settable)
  return unless settable_settings[settable.class.name]

  settable_settings[settable.class.name].keys.each do |key|
    s = settable.settings.find_or_initialize_by(name: key)
    s.save unless s.persisted?
  end
end

#raise_on_undefined(value, options = {}) ⇒ Object

If true, raise Vario::UnknownSetting if a unknown setting is retrieved, if false unknown settings return nil



52
53
54
55
56
# File 'lib/vario/config.rb', line 52

def raise_on_undefined(value, options = {})
  settable_type = options.delete(:settable_type) || @settable_type
  settable_types[settable_type] ||= {}
  settable_types[settable_type][:raise_on_undefined] = value
end

#raise_on_undefined?(settable_type) ⇒ Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/vario/config.rb', line 95

def raise_on_undefined?(settable_type)
  settable_types.dig(settable_type, :raise_on_undefined)
end

#settable_setting(settable_type, name) ⇒ Object



83
84
85
# File 'lib/vario/config.rb', line 83

def settable_setting(settable_type, name)
  settable_settings.dig(settable_type, name)
end

#setting(name, options = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/vario/config.rb', line 41

def setting(name, options = {})
  settable_type = options.delete(:settable_type) || @settable_type
  options[:type] ||= :string
  options[:keys] ||= []
  options[:default] ||= nil
  options[:description] ||= "Configuration for #{name}, possible on: #{(options[:keys] + ['default']).map(&:to_s).join(', ')}"
  settable_settings[settable_type] ||= {}
  settable_settings[settable_type][name.to_s] = options
end

#show_group?(name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
37
38
39
# File 'lib/vario/config.rb', line 33

def show_group?(name)
  if @show_group_if[name].is_a?(Proc)
    @show_group_if[name].call
  else
    true
  end
end

#show_group_if(name, block) ⇒ Object



29
30
31
# File 'lib/vario/config.rb', line 29

def show_group_if(name, block)
  @show_group_if[name] = block
end