Class: RailsSettings::Base
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- RailsSettings::Base
- Defined in:
- lib/rails-settings/base.rb
Constant Summary collapse
- PROTECTED_KEYS =
%w[var value]
Class Attribute Summary collapse
-
.defined_fields ⇒ Object
readonly
Returns the value of attribute defined_fields.
Class Method Summary collapse
- ._rails_scope ⇒ Object
- .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
- .scope(*args) {|block| ... } ⇒ 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 Attribute Details
.defined_fields ⇒ Object (readonly)
Returns the value of attribute defined_fields.
74 75 76 |
# File 'lib/rails-settings/base.rb', line 74 def defined_fields @defined_fields end |
Class Method Details
._rails_scope ⇒ Object
35 |
# File 'lib/rails-settings/base.rb', line 35 alias_method :_rails_scope, :scope |
.cache_key ⇒ Object
56 57 58 59 60 |
# File 'lib/rails-settings/base.rb', line 56 def cache_key key_parts = ["rails-settings-cached"] key_parts << @cache_prefix.call if @cache_prefix key_parts.join("/") end |
.cache_prefix(&block) ⇒ Object
52 53 54 |
# File 'lib/rails-settings/base.rb', line 52 def cache_prefix(&block) @cache_prefix = block end |
.clear_cache ⇒ Object
26 27 28 29 |
# File 'lib/rails-settings/base.rb', line 26 def clear_cache RequestCache.reset cache_storage.delete(cache_key) end |
.editable_keys ⇒ Object
66 67 68 |
# File 'lib/rails-settings/base.rb', line 66 def editable_keys @defined_fields.reject(&:readonly).map(&:key) end |
.field(key, **opts) ⇒ Object
31 32 33 |
# File 'lib/rails-settings/base.rb', line 31 def field(key, **opts) _define_field(key, **opts) end |
.get_field(key) ⇒ Object
48 49 50 |
# File 'lib/rails-settings/base.rb', line 48 def get_field(key) @defined_fields.find { |field| field.key == key.to_s }.to_h || {} end |
.keys ⇒ Object
62 63 64 |
# File 'lib/rails-settings/base.rb', line 62 def keys @defined_fields.map(&:key) end |
.readonly_keys ⇒ Object
70 71 72 |
# File 'lib/rails-settings/base.rb', line 70 def readonly_keys @defined_fields.select(&:readonly).map(&:key) end |
.scope(*args) {|block| ... } ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/rails-settings/base.rb', line 36 def scope(*args, &block) name = args.shift body = args.shift if body.respond_to?(:call) return _rails_scope(name, body, &block) end @scope = name.to_sym yield block @scope = nil end |
Instance Method Details
#clear_cache ⇒ Object
21 22 23 |
# File 'lib/rails-settings/base.rb', line 21 def clear_cache self.class.clear_cache end |
#value ⇒ Object
get the value field, YAML decoded
11 12 13 14 |
# File 'lib/rails-settings/base.rb', line 11 def value payload = self[:value] YAML.unsafe_load(payload) if payload.present? end |
#value=(new_value) ⇒ Object
set the value field, YAML encoded
17 18 19 |
# File 'lib/rails-settings/base.rb', line 17 def value=(new_value) self[:value] = new_value.to_yaml end |