Class: RailsSettings::Base
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- RailsSettings::Base
- Defined in:
- lib/rails-settings/base.rb
Defined Under Namespace
Classes: SettingNotFound
Constant Summary collapse
- SEPARATOR_REGEXP =
/[\n,;]+/.freeze
Class Method Summary collapse
- .cache_key ⇒ Object
- .cache_prefix(&block) ⇒ Object
- .clear_cache ⇒ Object
- .editable_keys ⇒ Object
- .field(key, **opts) ⇒ Object
- .get_field(key) ⇒ Object
- .keys ⇒ Object
- .readonly_keys ⇒ Object
Instance Method Summary collapse
- #clear_cache ⇒ Object
-
#value ⇒ Object
get the value field, YAML decoded.
-
#value=(new_value) ⇒ Object
set the value field, YAML encoded.
Class Method Details
.cache_key ⇒ Object
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_cache ⇒ Object
25 26 27 28 |
# File 'lib/rails-settings/base.rb', line 25 def clear_cache RequestCache.reset Rails.cache.delete(cache_key) end |
.editable_keys ⇒ Object
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 |
.keys ⇒ Object
48 49 50 |
# File 'lib/rails-settings/base.rb', line 48 def keys @defined_fields.map { |field| field[:key] } end |
.readonly_keys ⇒ Object
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_cache ⇒ Object
20 21 22 |
# File 'lib/rails-settings/base.rb', line 20 def clear_cache self.class.clear_cache end |
#value ⇒ Object
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 |