Class: RailsSettings::Base

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/rails-settings/base.rb

Defined Under Namespace

Classes: SettingNotFound

Constant Summary collapse

SEPARATOR_REGEXP =
/[\n,;]+/.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cache_keyObject



42
43
44
45
46
# File 'lib/rails-settings/base.rb', line 42

def cache_key
  scope = ["rails-settings-cached"]
  scope << @cache_prefix.call if @cache_prefix
  scope.join("/")
end

.cache_prefix(&block) ⇒ Object



38
39
40
# File 'lib/rails-settings/base.rb', line 38

def cache_prefix(&block)
  @cache_prefix = block
end

.clear_cacheObject



25
26
27
28
# File 'lib/rails-settings/base.rb', line 25

def clear_cache
  RequestCache.reset
  Rails.cache.delete(cache_key)
end

.editable_keysObject



52
53
54
# File 'lib/rails-settings/base.rb', line 52

def editable_keys
  @defined_fields.reject { |field| field[:readonly] }.map { |field| field[:key] }
end

.field(key, **opts) ⇒ Object



30
31
32
# File 'lib/rails-settings/base.rb', line 30

def field(key, **opts)
  _define_field(key, default: opts[:default], type: opts[:type], readonly: opts[:readonly], separator: opts[:separator], validates: opts[:validates])
end

.get_field(key) ⇒ Object



34
35
36
# File 'lib/rails-settings/base.rb', line 34

def get_field(key)
  @defined_fields.find { |field| field[:key] == key.to_s } || {}
end

.keysObject



48
49
50
# File 'lib/rails-settings/base.rb', line 48

def keys
  @defined_fields.map { |field| field[:key] }
end

.readonly_keysObject



56
57
58
# File 'lib/rails-settings/base.rb', line 56

def readonly_keys
  @defined_fields.select { |field| field[:readonly] }.map { |field| field[:key] }
end

Instance Method Details

#clear_cacheObject



20
21
22
# File 'lib/rails-settings/base.rb', line 20

def clear_cache
  self.class.clear_cache
end

#valueObject

get the value field, YAML decoded



11
12
13
# File 'lib/rails-settings/base.rb', line 11

def value
  YAML.load(self[:value]) if self[:value].present?
end

#value=(new_value) ⇒ Object

set the value field, YAML encoded



16
17
18
# File 'lib/rails-settings/base.rb', line 16

def value=(new_value)
  self[:value] = new_value.to_yaml
end