class Sunstore::Store

Attributes

basename[R]
format[R]
handler[R]
store_file[R]

Public Class Methods

instance() click to toggle source
# File lib/sunstore/store.rb, line 9
def self.instance
  @@instance ||= new
end
new() click to toggle source
# File lib/sunstore/store.rb, line 17
def initialize
  config  
end
reset() click to toggle source
# File lib/sunstore/store.rb, line 13
def self.reset
  @@instance = nil
end

Public Instance Methods

clear() click to toggle source
# File lib/sunstore/store.rb, line 48
def clear
  data.clear
  save_data  
end
config(params={}) click to toggle source
# File lib/sunstore/store.rb, line 21
def config(params={})
  @format = [:yaml,:json,nil].include?(params[:format]) ? params[:format] || :yaml : raise("Only yaml and json currently supported")
  @basename = params[:basename] || "sunstore"
  @basedir = params[:basedir] ||  (defined?(Rails) ? Rails.root.to_s : Dir.getwd)
  create_dir_structure(@basedir)
  @handler = Sunstore::Handler.for(format)
  @store_file = File.join(@basedir,"#{@basename}.#{@handler.type}")
end
delete(key) click to toggle source
# File lib/sunstore/store.rb, line 39
def delete(key)
  data.delete(key)
  save_data
end
get(key) click to toggle source
# File lib/sunstore/store.rb, line 30
def get(key)
  data[key]
end
keys() click to toggle source
# File lib/sunstore/store.rb, line 44
def keys
  data.keys  
end
put(key,value) click to toggle source
# File lib/sunstore/store.rb, line 34
def put(key,value)
  data[key] = value
  save_data
end

Private Instance Methods

create_dir_structure(target_dir) click to toggle source
# File lib/sunstore/store.rb, line 72
def create_dir_structure(target_dir)
  curdir = ''
  target_dir.split('/').each do |dir|
    curdir = File.join(curdir,dir)
    Dir.exist?(curdir) or Dir.mkdir(curdir)
  end
end
data() click to toggle source
# File lib/sunstore/store.rb, line 61
def data
  unless @data 
    if File.exist?(store_file)
      @data = @handler.deserialize(File.read(store_file)) || {}
    else
      @data = {}
    end
  end
  @data
end
save_data() click to toggle source
# File lib/sunstore/store.rb, line 55
def save_data
  File.open(store_file,"w") do |f|
    f.write @handler.serialize(@data)
  end
end