Sha256: 0f0e50feb36fe56f7987ed5a28c5e1338ff8f515de6985d1bf287003a92366aa

Contents?: true

Size: 1.61 KB

Versions: 4

Compression:

Stored size: 1.61 KB

Contents

require 'redic'
require 'digest/sha1'
require 'msgpack'
require 'class_config'
require 'logger'
require 'fileutils'
require 'forwardable'
require 'restruct'
require 'base64'
require 'locky'
require 'transparent_proxy'

module Eternity

  INSERT = 'insert'.freeze
  UPDATE = 'update'.freeze
  DELETE = 'delete'.freeze

  TIME_FORMAT = '%Y-%m-%dT%H:%M:%S%z'

  extend ClassConfig

  attr_config :redis, Redic.new
  attr_config :keyspace, Restruct::Id.new(:eternity)
  attr_config :blob_cache_expiration, 24 * 60 * 60 # 1 day in seconds
  attr_config :blob_path, File.join(Dir.home, '.eternity')
  attr_config :logger, Logger.new(STDOUT)

  def self.locker_storage
    @locker_storage ||= Restruct::MarshalHash.new redis: Redic.new(redis.url), 
                                                  id: keyspace[:locker]
  end

  def self.redis_keys
    redis.call 'KEYS', keyspace['*']
  end

  def self.clear_redis
    redis_keys.each do |key|
      redis.call 'DEL', key
    end
  end

  def self.clear_file_system
    FileUtils.rm_rf blob_path if Dir.exists? blob_path
  end

end

require_relative 'eternity/version'
require_relative 'eternity/log'
require_relative 'eternity/blob'
require_relative 'eternity/repository'
require_relative 'eternity/object_tracker'
require_relative 'eternity/collection_tracker'
require_relative 'eternity/tracker'
require_relative 'eternity/collection_index'
require_relative 'eternity/index'
require_relative 'eternity/commit'
require_relative 'eternity/branch'
require_relative 'eternity/patch'
require_relative 'eternity/track_flatter'
require_relative 'eternity/conflict_resolver'
require_relative 'eternity/delta'

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eternity-0.0.4 lib/eternity.rb
eternity-0.0.3 lib/eternity.rb
eternity-0.0.2 lib/eternity.rb
eternity-0.0.1 lib/eternity.rb