module Perpetuity

Constants

DuplicateKeyError
VERSION

Public Class Methods

[](klass) click to toggle source
# File lib/perpetuity.rb, line 23
def self.[] klass
  mapper_registry[klass]
end
configuration() click to toggle source
# File lib/perpetuity.rb, line 13
def self.configuration
  @configuration ||= Configuration.new
end
configure(&block) click to toggle source
# File lib/perpetuity.rb, line 7
def self.configure &block
  register_standard_adapters
  detect_rails
  configuration.instance_exec(&block)
end
data_source(*args) click to toggle source
# File lib/perpetuity.rb, line 31
def self.data_source *args
  configure { data_source *args }
end
generate_mapper_for(klass, &block) click to toggle source
# File lib/perpetuity.rb, line 17
def self.generate_mapper_for klass, &block
  mapper = Class.new(Mapper)
  mapper.map klass, mapper_registry
  mapper.class_eval(&block) if block_given?
end
logger() click to toggle source
# File lib/perpetuity.rb, line 35
def self.logger
  configuration.logger
end
mapper_registry() click to toggle source
# File lib/perpetuity.rb, line 27
def self.mapper_registry
  @mapper_registry ||= MapperRegistry.new
end
register_adapter(adapters) click to toggle source
# File lib/perpetuity.rb, line 39
def self.register_adapter adapters
  config_adapters = Perpetuity::Configuration.adapters
  adapters.each do |adapter_name, adapter_class|
    if config_adapters.has_key?(adapter_name) && config_adapters[adapter_name] != adapter_class
      raise "That adapter name has already been registered for #{config_adapters[adapter_name]}"
    else
      config_adapters[adapter_name] = adapter_class
    end
  end
end

Private Class Methods

detect_rails() click to toggle source

Necessary to be able to check whether Rails is loaded and initialized

# File lib/perpetuity.rb, line 53
def self.detect_rails
  require File.expand_path('../perpetuity/rails.rb', __FILE__) if defined? Rails
end
register_standard_adapters() click to toggle source

Necessary until these adapters are updated to register themselves.

# File lib/perpetuity.rb, line 58
def self.register_standard_adapters
  Perpetuity.register_adapter :mongodb => Perpetuity::MongoDB if defined?(Perpetuity::MongoDB)
  Perpetuity.register_adapter :postgres => Perpetuity::Postgres if defined?(Perpetuity::Postgres)
  Perpetuity.register_adapter :dynamodb => Perpetuity::DynamoDB if defined?(Perpetuity::DynamoDB)
end