class Blackbeard::Storable
Attributes
id[R]
new_record[RW]
Public Class Methods
all()
click to toggle source
# File lib/blackbeard/storable.rb, line 97 def self.all all_keys.map{ |key| new_from_key(key) } end
all_keys()
click to toggle source
# File lib/blackbeard/storable.rb, line 75 def self.all_keys db.hash_keys(master_key) end
count()
click to toggle source
# File lib/blackbeard/storable.rb, line 79 def self.count db.hash_length(master_key) end
create(id, attributes = {})
click to toggle source
# File lib/blackbeard/storable.rb, line 60 def self.create(id, attributes = {}) key = key_for(id) raise StorableDuplicateKey if db.hash_field_exists(master_key, key) storable = new(id) storable.save storable.update_attributes(attributes) unless attributes.empty? storable end
find(id)
click to toggle source
# File lib/blackbeard/storable.rb, line 52 def self.find(id) key = key_for(id) return nil unless db.hash_field_exists(master_key, key) storable = new(id) storable.new_record = false storable end
find_or_create(id)
click to toggle source
# File lib/blackbeard/storable.rb, line 69 def self.find_or_create(id) storable = new(id) storable.save storable end
key_for(id)
click to toggle source
# File lib/blackbeard/storable.rb, line 123 def self.key_for(id) "#{master_key}::#{ id.to_s.downcase }" end
master_key()
click to toggle source
# File lib/blackbeard/storable.rb, line 15 def master_key return @master_key if defined? @master_key return self.superclass.master_key if self.superclass.respond_to?(:master_key) raise StorableMasterKeyUndefined, "define master key in the class that inherits from storable" end
new(id)
click to toggle source
# File lib/blackbeard/storable.rb, line 47 def initialize(id) @id = id.to_s.downcase @new_record = true end
new_from_key(key)
click to toggle source
# File lib/blackbeard/storable.rb, line 87 def self.new_from_key(key) if key =~ /^#{master_key}::(.+)$/ storable = new($1) storable.new_record = false storable else nil end end
new_from_keys(*keys)
click to toggle source
# File lib/blackbeard/storable.rb, line 83 def self.new_from_keys(*keys) keys.flatten.map{ |key| new_from_key(key) } end
on_reload(method)
click to toggle source
# File lib/blackbeard/storable.rb, line 30 def on_reload(method) on_reload_methods.push(method) end
on_reload_methods()
click to toggle source
# File lib/blackbeard/storable.rb, line 34 def on_reload_methods @on_reload_methods ||= self.superclass.on_reload_methods.dup if self.superclass.respond_to?(:on_reload_methods) @on_reload_methods ||= [] end
on_save(method)
click to toggle source
# File lib/blackbeard/storable.rb, line 21 def on_save(method) on_save_methods.push(method) end
on_save_methods()
click to toggle source
# File lib/blackbeard/storable.rb, line 25 def on_save_methods @on_save_methods ||= self.superclass.on_save_methods.dup if self.superclass.respond_to?(:on_save_methods) @on_save_methods ||= [] end
set_master_key(master_key)
click to toggle source
# File lib/blackbeard/storable.rb, line 11 def set_master_key(master_key) @master_key = master_key.to_s end
Public Instance Methods
==(o)
click to toggle source
# File lib/blackbeard/storable.rb, line 119 def ==(o) o.class == self.class && o.id == self.id end
key()
click to toggle source
# File lib/blackbeard/storable.rb, line 127 def key self.class.key_for(id) end
master_key()
click to toggle source
# File lib/blackbeard/storable.rb, line 131 def master_key self.class.master_key end
new_record?()
click to toggle source
# File lib/blackbeard/storable.rb, line 115 def new_record? @new_record end
reload()
click to toggle source
# File lib/blackbeard/storable.rb, line 110 def reload self.class.on_reload_methods.each{ |m| self.send(m) } self end
save()
click to toggle source
# File lib/blackbeard/storable.rb, line 101 def save if new_record? db.hash_key_set_if_not_exists(master_key, key, tz.now.to_date) @new_record = false end self.class.on_save_methods.each{ |m| self.send(m) } true end