Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Persistable
- require 'set' unless defined? Set
- def self.included(klass)
- klass.class_eval do
- attr_accessor :_store
- private :_store
- def store
- self._store ||= if defined?(Maglev)
- self.maglev_persistable
- ( Maglev::PERSISTENT_ROOT[self] ||= Set.new )
- else
- Set.new
- end
- end
- def self.store
- (self.first) ? (self.first._store) : nil
- end
- class << self
- include Enumerable
- require 'debug'
- debug
- def each(&block)
- #@@store.each {|x| yield x}
- @@store.each &block
- end
- def count
- @@store.count
- end
- def all
- @@store.to_a
- end
- def delete_all
- @@store -= @@store
- end
- end
- def persist
- @@store.add?(self) ? true: false
- end
- def desist
- @@store.delete self
- end
- def persistent?
- @@store.include? self
- end
- def transient?
- not persistent?
- end
- end
- end
- end
Add Comment
Please, Sign In to add comment