Class: Plasma::Storage::Variable

Inherits:
ApplicationRecord show all
Defined in:
lib/plasma/storage/variable.rb

Overview

Model for storing key-value pairs with automatic JSON parsing

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_valueObject

Returns the value of attribute default_value.



25
26
27
# File 'lib/plasma/storage/variable.rb', line 25

def default_value
  @default_value
end

Class Method Details

.default(value) ⇒ Object



47
48
49
# File 'lib/plasma/storage/variable.rb', line 47

def default(value)
  @default_value = value
end

.getObject



43
44
45
# File 'lib/plasma/storage/variable.rb', line 43

def get
  find_by(key: key)&.value || default_value
end

.inherited(subclass) ⇒ Object



27
28
29
30
31
# File 'lib/plasma/storage/variable.rb', line 27

def inherited(subclass)
  super
  const_name = subclass.to_s.split("::").last
  Plasma.const_set(const_name, subclass) unless Plasma.const_defined?(const_name)
end

.keyObject



33
34
35
# File 'lib/plasma/storage/variable.rb', line 33

def key
  name.demodulize.underscore
end

.set(value) ⇒ Object



37
38
39
40
41
# File 'lib/plasma/storage/variable.rb', line 37

def set(value)
  raise "Failed to set value for #{key}" unless create_or_find_by(key: key).update(value: value)

  value
end