Class: Storage
- Inherits:
-
Object
- Object
- Storage
- Defined in:
- lib/storage.rb
Overview
use it like
Class Attribute Summary collapse
Instance Method Summary collapse
-
#[](key) ⇒ Object
retrieve key value note: it does not re-read from disk before returning you this value.
-
#[]=(key, value) ⇒ Object
set key to value note: it automatically saves this to disk.
-
#initialize(name) ⇒ Storage
constructor
Open a storage file or create it if it doesn’t exist.
- #keys ⇒ Object
-
#rollback ⇒ Object
Rollback the storage to the latest revision saved to disk or empty it if it hasn’t been saved.
-
#save ⇒ Object
Save the storage to disk.
- #set_default(key, value) ⇒ Object
Constructor Details
#initialize(name) ⇒ Storage
Open a storage file or create it if it doesn’t exist.
15 16 17 18 19 20 21 |
# File 'lib/storage.rb', line 15 def initialize(name) @name = name unless File.exists?(Storage.storage_dir) FileUtils.mkdir_p(Storage.storage_dir) end rollback end |
Class Attribute Details
.storage_dir ⇒ Object
8 9 10 |
# File 'lib/storage.rb', line 8 def self.storage_dir @user_dir ||= File.join(File.('~'), ".storage") end |
Instance Method Details
#[](key) ⇒ Object
retrieve key value note: it does not re-read from disk before returning you this value
45 46 47 48 49 50 51 52 |
# File 'lib/storage.rb', line 45 def [](key) if @last_modified_time if File.exist?(path()) && (File.stat(path()).mtime != @last_modified_time) rollback end end @storage[key] end |
#[]=(key, value) ⇒ Object
set key to value note: it automatically saves this to disk
56 57 58 59 60 |
# File 'lib/storage.rb', line 56 def []=(key, value) @storage[key] = value save value end |
#keys ⇒ Object
69 70 71 |
# File 'lib/storage.rb', line 69 def keys @storage.keys end |
#rollback ⇒ Object
Rollback the storage to the latest revision saved to disk or empty it if it hasn’t been saved.
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/storage.rb', line 32 def rollback if File.exists?(path) @storage = YAML.load_file(path) raise 'storage file is corrupted--please delete ' + path unless @storage.is_a? Hash else @storage = {} end self end |
#save ⇒ Object
Save the storage to disk.
24 25 26 27 28 |
# File 'lib/storage.rb', line 24 def save File.open(path, "w") { |f| YAML.dump(@storage, f) } self end |
#set_default(key, value) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/storage.rb', line 62 def set_default(key, value) unless @storage.has_key?(key) self[key] = value end value end |