class Store2::File

Attributes

data[R]

Public Class Methods

_reset() click to toggle source
# File lib/store2/file.rb, line 78
def _reset
  instances.each(&:_reset)
end
new(*args) click to toggle source
Calls superclass method
# File lib/store2/file.rb, line 3
def initialize(*args)
  super
  @data = load
  self.class.register(self)
end
register(instance) click to toggle source
# File lib/store2/file.rb, line 74
def register(instance)
  instances << instance
end

Private Class Methods

instances() click to toggle source
# File lib/store2/file.rb, line 84
def instances
  @_instances ||= []
end

Public Instance Methods

_reset() click to toggle source
# File lib/store2/file.rb, line 43
def _reset
  create
end
build() click to toggle source
# File lib/store2/file.rb, line 9
def build
  scoped
end
fetch(keys, &block) click to toggle source
# File lib/store2/file.rb, line 34
def fetch(keys, &block)
  return block.call unless has?(keys)
  get(keys)
end
get(keys) click to toggle source
# File lib/store2/file.rb, line 17
def get(keys)
  keys.inject(data) { |data, key| data.fetch(key) }
end
get_or_set(keys, value) click to toggle source
# File lib/store2/file.rb, line 29
def get_or_set(keys, value)
  set(keys, value) unless has?(keys)
  get(keys)
end
has?(keys) click to toggle source
# File lib/store2/file.rb, line 25
def has?(keys)
  get(keys[0...-1]).has_key?(keys[-1])
end
save() click to toggle source
# File lib/store2/file.rb, line 39
def save
  ::File.write(filename, to_yaml)
end
scoped(*keys) click to toggle source
# File lib/store2/file.rb, line 13
def scoped(*keys)
  Scoped.new(self, keys)
end
set(keys, value) click to toggle source
# File lib/store2/file.rb, line 21
def set(keys, value)
  get(keys[0...-1])[keys[-1]] = value
end

Private Instance Methods

clear() click to toggle source
# File lib/store2/file.rb, line 64
def clear
  @data = {}
end
create() click to toggle source
# File lib/store2/file.rb, line 58
def create
  clear
  save
  data
end
load() click to toggle source
# File lib/store2/file.rb, line 53
def load
  return create unless ::File.exist?(filename)
  YAML.load_file(filename)
end
to_yaml() click to toggle source
# File lib/store2/file.rb, line 68
def to_yaml
  data.to_yaml
end