Module: SSD::ClassMethods
- Defined in:
- lib/ssd.rb
Class Method Summary collapse
Instance Method Summary collapse
- #[](id) ⇒ Object
- #count(id) ⇒ Object
- #delete(*ids) ⇒ Object (also: #remove)
- #fetch(id) ⇒ Object (also: #get, #find)
- #key?(id) ⇒ Boolean (also: #exists?)
- #keys(id) ⇒ Object
- #last_key(id) ⇒ Object
- #setup(id) ⇒ Object
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?
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 |