Class: RailsSettings::Base
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- RailsSettings::Base
- Defined in:
- lib/rails-settings/base.rb
Constant Summary collapse
- SEPARATOR_REGEXP =
/[\n,;]+/
- 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.
79 80 81 |
# File 'lib/rails-settings/base.rb', line 79 def defined_fields @defined_fields end |
Class Method Details
._rails_scope ⇒ Object
40 |
# File 'lib/rails-settings/base.rb', line 40 alias_method :_rails_scope, :scope |
.cache_key ⇒ Object
61 62 63 64 65 |
# File 'lib/rails-settings/base.rb', line 61 def cache_key key_parts = ["rails-settings-cached"] key_parts << @cache_prefix.call if @cache_prefix key_parts.join("/") end |
.cache_prefix(&block) ⇒ Object
57 58 59 |
# File 'lib/rails-settings/base.rb', line 57 def cache_prefix(&block) @cache_prefix = block end |
.clear_cache ⇒ Object
31 32 33 34 |
# File 'lib/rails-settings/base.rb', line 31 def clear_cache RequestCache.reset Rails.cache.delete(cache_key) end |
.editable_keys ⇒ Object
71 72 73 |
# File 'lib/rails-settings/base.rb', line 71 def editable_keys @defined_fields.reject { |field| field[:readonly] }.map { |field| field[:key] } end |
.field(key, **opts) ⇒ Object
36 37 38 |
# File 'lib/rails-settings/base.rb', line 36 def field(key, **opts) _define_field(key, **opts) end |
.get_field(key) ⇒ Object
53 54 55 |
# File 'lib/rails-settings/base.rb', line 53 def get_field(key) @defined_fields.find { |field| field[:key] == key.to_s } || {} end |
.keys ⇒ Object
67 68 69 |
# File 'lib/rails-settings/base.rb', line 67 def keys @defined_fields.map { |field| field[:key] } end |
.readonly_keys ⇒ Object
75 76 77 |
# File 'lib/rails-settings/base.rb', line 75 def readonly_keys @defined_fields.select { |field| field[:readonly] }.map { |field| field[:key] } end |
.scope(*args) {|block| ... } ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/rails-settings/base.rb', line 41 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
26 27 28 |
# File 'lib/rails-settings/base.rb', line 26 def clear_cache self.class.clear_cache end |
#value ⇒ Object
get the value field, YAML decoded
16 17 18 19 |
# File 'lib/rails-settings/base.rb', line 16 def value # rubocop:disable Security/YAMLLoad YAML.load(self[:value]) if self[:value].present? end |
#value=(new_value) ⇒ Object
set the value field, YAML encoded
22 23 24 |
# File 'lib/rails-settings/base.rb', line 22 def value=(new_value) self[:value] = new_value.to_yaml end |