Class: ActiveSetting::Setting

Inherits:
Object
  • Object
show all
Defined in:
lib/active_setting/setting.rb

Overview

< ActiveRecord::Base

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attr = {}) ⇒ Setting

Returns a new instance of Setting.



12
13
14
15
16
17
# File 'lib/active_setting/setting.rb', line 12

def initialize(attr = {})
  attr.each do |key, value|
    setter = "#{key}="
    send(setter, value) if respond_to?(setter)
  end
end

Instance Attribute Details

#categoryObject

Returns the value of attribute category.



5
6
7
# File 'lib/active_setting/setting.rb', line 5

def category
  @category
end

#data_typeObject

Returns the value of attribute data_type.



6
7
8
# File 'lib/active_setting/setting.rb', line 6

def data_type
  @data_type
end

#defaultObject

Returns the value of attribute default.



5
6
7
# File 'lib/active_setting/setting.rb', line 5

def default
  @default
end

#descriptionObject

Returns the value of attribute description.



5
6
7
# File 'lib/active_setting/setting.rb', line 5

def description
  @description
end

#nameObject

Returns the value of attribute name.



5
6
7
# File 'lib/active_setting/setting.rb', line 5

def name
  @name
end

#object_options=(value) ⇒ Object (writeonly)

Sets the attribute object_options

Parameters:

  • value

    the value to set the attribute object_options to.



60
61
62
# File 'lib/active_setting/setting.rb', line 60

def object_options=(value)
  @object_options = value
end

#optionsObject

Returns the value of attribute options.



6
7
8
# File 'lib/active_setting/setting.rb', line 6

def options
  @options
end

#raw_valueObject

Returns the value of attribute raw_value.



5
6
7
# File 'lib/active_setting/setting.rb', line 5

def raw_value
  @raw_value
end

#subtypeObject

Returns the value of attribute subtype.



6
7
8
# File 'lib/active_setting/setting.rb', line 6

def subtype
  @subtype
end

Class Method Details

.convert_value(val, data_type) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/active_setting/setting.rb', line 92

def self.convert_value(val, data_type)
  case data_type
  when :boolean then ![nil, false, 'false', 0, '0'].include?(val)
  when :integer then val.to_i
  when :string then val.to_s
  when :symbol then val.to_sym
  when :decimal then BigDecimal(val)
  else val
  end
end

.define_shortcut_method(setting) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/active_setting/setting.rb', line 29

def self.define_shortcut_method(setting)
  class_eval <<-TEXT
    def self.#{setting.name}
      self.class.registered_settings[:#{setting.name}].value
    end
    def self.#{setting.name}=(value)
      self.class.registered_settings[:#{setting.name}].raw_value = value
    end
  TEXT
end

.register(name, options) ⇒ Object



19
20
21
# File 'lib/active_setting/setting.rb', line 19

def self.register(name, options)
  new(options.merge(name: name)).register
end

.registered_settingsObject



8
9
10
# File 'lib/active_setting/setting.rb', line 8

def self.registered_settings
  @registered_settings ||= {}
end

Instance Method Details

#calculate_object_optionsObject

DEPRECATED: Please use standard options instead.



63
64
65
66
67
68
69
70
71
# File 'lib/active_setting/setting.rb', line 63

def calculate_object_options
  puts '[WARNING] ActiveSetting::Setting#object_options is deprecated'\
    ' as it poses a serious security risk and will be removed in future versions'

  objects, key, value = @object_options.split(' ')
  value = key if value.nil? || value == ''
  # TODO: Remove this method, as it uses eval !!!
  objects_from_collection(eval(objects), key, value)
end

#objects_from_collection(collection, key, value) ⇒ Object



73
74
75
# File 'lib/active_setting/setting.rb', line 73

def objects_from_collection(collection, key, value)
  collection.map { |o| [o.send(key), o.send(value)] }
end

#registerObject



23
24
25
26
27
# File 'lib/active_setting/setting.rb', line 23

def register
  self.class.registered_settings[name.to_sym] = self
  Setting.define_shortcut_method(self)
  self
end

#settingObject



40
41
42
# File 'lib/active_setting/setting.rb', line 40

def setting
  self.class.registered_settings[@name.to_sym]
end

#valueObject



82
83
84
85
86
87
88
89
90
# File 'lib/active_setting/setting.rb', line 82

def value
  v = raw_value
  v = default if raw_value.nil?

  # TODO: WHY IS the first line here
  return nil if v.nil?

  @value ||= build_value(v)
end