Module: SSD::ClassMethods

Defined in:
lib/ssd.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/ssd.rb', line 65

def self.extended(base)
  @@ssd_name  		= base.new.class.to_s.downcase
  #FileUtils::mkdir_p 'DS'
  #@@ssd_path 			= "DS/#{name}.pstore" 
  #@@ssd_db 			= PStore.new @@ssd_path, true
  #@@ssd_db.ultra_safe 	= true
  #@@ssd_db.transaction(true) {}
  #@@ssd_db
end

Instance Method Details

#[](id) ⇒ Object



109
110
111
112
113
114
# File 'lib/ssd.rb', line 109

def [] id 
  setup id 
  @@ssd_db.transaction true do
	@@ssd_db[id.to_sym]
  end
end

#count(id) ⇒ Object



137
138
139
140
141
# File 'lib/ssd.rb', line 137

def count id
  setup id 
  $log.info("count")
  return keys(id).count
end

#delete(*ids) ⇒ Object Also known as: remove



127
128
129
130
131
132
133
134
# File 'lib/ssd.rb', line 127

def delete *ids
  @@ssd_db.transaction do
	ids.each do |id|
	  @@ssd_db.delete id.to_sym
	end
	@@ssd_db.commit
  end
end

#fetch(id) ⇒ Object Also known as: get, find



116
117
118
119
120
121
122
# File 'lib/ssd.rb', line 116

def fetch id  
  #TODO add raise if id.nil?
  last_key = (last_key id) 
  @@ssd_db.transaction true do
	@@ssd_db.fetch last_key
  end
end

#key?(id) ⇒ Boolean Also known as: exists?

Returns:

  • (Boolean)


100
101
102
103
104
105
# File 'lib/ssd.rb', line 100

def key? id 
  setup id 
  @@ssd_db.transaction true do
	@@ssd_db.root? id.to_sym
  end
end

#keys(id) ⇒ Object



93
94
95
96
97
98
# File 'lib/ssd.rb', line 93

def keys id
  setup id 
  @@ssd_db.transaction true do
	@@ssd_db.roots
  end
end

#last_key(id) ⇒ Object



85
86
87
88
89
90
91
# File 'lib/ssd.rb', line 85

def last_key id
  setup id 
  last_key = @@ssd_db.transaction true do
	@@ssd_db.roots
  end
  last_key.last
end

#setup(id) ⇒ Object



75
76
77
78
79
80
81
82
83
# File 'lib/ssd.rb', line 75

def setup id
  @@id = id
  FileUtils::mkdir_p ".ssd/#{@@ssd_name}"
  @@ssd_path 		= ".ssd/#{@@ssd_name}/#{@@id}.ssd" 
  @@ssd_db 			= PStore.new @@ssd_path, true
  @@ssd_db.ultra_safe 	= true
  @@ssd_db.transaction(true) {}
  return @@ssd_db
end