Class: Vario::Config
- Inherits:
-
Object
- Object
- Vario::Config
- Defined in:
- lib/vario/config.rb
Instance Attribute Summary collapse
-
#admin_layout ⇒ Object
Returns the value of attribute admin_layout.
-
#base_controller ⇒ Object
Returns the value of attribute base_controller.
- #current_settable ⇒ Object
-
#keys ⇒ Object
readonly
Returns the value of attribute keys.
-
#logger ⇒ Object
Config: logger [Object].
-
#settable_settings ⇒ Object
readonly
Returns the value of attribute settable_settings.
-
#settable_types ⇒ Object
readonly
Returns the value of attribute settable_types.
Instance Method Summary collapse
-
#create_on_request(value, options = {}) ⇒ Object
If true, a new setting will be saved for settings that do not exist.
- #create_on_request?(settable_type) ⇒ Boolean
- #default_keys?(settable_type) ⇒ Boolean
- #for_settable_type(settable_type) {|_self| ... } ⇒ Object
-
#initialize ⇒ Config
constructor
A new instance of Config.
-
#key(name, options) ⇒ Object
Config setters.
- #key_data_for(key) ⇒ Object
- #pre_create_settings(settable) ⇒ Object
-
#raise_on_undefined(value, options = {}) ⇒ Object
If true, raise Vario::UnknownSetting if a unknown setting is retrieved, if false unknown settings return nil.
- #raise_on_undefined?(settable_type) ⇒ Boolean
- #settable_setting(settable_type, name) ⇒ Object
- #setting(name, options = {}) ⇒ Object
- #show_group?(name) ⇒ Boolean
- #show_group_if(name, block) ⇒ Object
Constructor Details
#initialize ⇒ Config
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_layout ⇒ Object
Returns the value of attribute admin_layout.
5 6 7 |
# File 'lib/vario/config.rb', line 5 def admin_layout @admin_layout end |
#base_controller ⇒ Object
Returns the value of attribute base_controller.
5 6 7 |
# File 'lib/vario/config.rb', line 5 def base_controller @base_controller end |
#current_settable ⇒ Object
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 |
#keys ⇒ Object (readonly)
Returns the value of attribute keys.
4 5 6 |
# File 'lib/vario/config.rb', line 4 def keys @keys end |
#logger ⇒ Object
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_settings ⇒ Object (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_types ⇒ Object (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, = {}) settable_type = .delete(:settable_type) || @settable_type settable_types[settable_type] ||= {} settable_types[settable_type][:create_on_request] = value settable_types[settable_type][:default_keys] = [:with_keys] end |
#create_on_request?(settable_type) ⇒ 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
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
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
22 23 24 25 26 27 |
# File 'lib/vario/config.rb', line 22 def key(name, ) .symbolize_keys! raise ArgumentError, 'name is required' unless .keys.include?(:name) raise ArgumentError, 'type is required' unless .keys.include?(:type) keys[name.to_s] = 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, = {}) settable_type = .delete(:settable_type) || @settable_type settable_types[settable_type] ||= {} settable_types[settable_type][:raise_on_undefined] = value end |
#raise_on_undefined?(settable_type) ⇒ 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, = {}) settable_type = .delete(:settable_type) || @settable_type [:type] ||= :string [:keys] ||= [] [:default] ||= nil [:description] ||= "Configuration for #{name}, possible on: #{([:keys] + ['default']).map(&:to_s).join(', ')}" settable_settings[settable_type] ||= {} settable_settings[settable_type][name.to_s] = end |
#show_group?(name) ⇒ 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 |