Module: Perpetuity

Defined in:
lib/perpetuity.rb,
lib/perpetuity/config.rb,
lib/perpetuity/mapper.rb,
lib/perpetuity/mongodb.rb,
lib/perpetuity/version.rb,
lib/perpetuity/attribute.rb,
lib/perpetuity/reference.rb,
lib/perpetuity/retrieval.rb,
lib/perpetuity/rails_model.rb,
lib/perpetuity/dereferencer.rb,
lib/perpetuity/identity_map.rb,
lib/perpetuity/attribute_set.rb,
lib/perpetuity/mongodb/index.rb,
lib/perpetuity/mongodb/query.rb,
lib/perpetuity/data_injectable.rb,
lib/perpetuity/mapper_registry.rb,
lib/perpetuity/mongodb/nil_query.rb,
lib/perpetuity/mongodb/serializer.rb,
lib/perpetuity/validations/length.rb,
lib/perpetuity/mongodb/query_union.rb,
lib/perpetuity/validations/presence.rb,
lib/perpetuity/mongodb/query_attribute.rb,
lib/perpetuity/mongodb/query_expression.rb,
lib/perpetuity/mongodb/query_intersection.rb,
lib/perpetuity/validations/validation_set.rb,
lib/perpetuity/exceptions/duplicate_key_error.rb

Defined Under Namespace

Modules: DataInjectable, RailsModel, Validations Classes: Attribute, AttributeSet, Configuration, Dereferencer, IdentityMap, Mapper, MapperRegistry, MongoDB, NilQuery, Reference, Retrieval, ValidationSet

Constant Summary collapse

VERSION =
"0.7.3"
DuplicateKeyError =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.[](klass) ⇒ Object



23
24
25
# File 'lib/perpetuity.rb', line 23

def self.[] klass
  mapper_registry[klass]
end

.configurationObject



13
14
15
# File 'lib/perpetuity.rb', line 13

def self.configuration
  @configuration ||= Configuration.new
end

.configure(&block) ⇒ Object



8
9
10
11
# File 'lib/perpetuity.rb', line 8

def self.configure &block
  detect_rails
  configuration.instance_exec(&block)
end

.data_source(adapter, db_name, options = {}) ⇒ Object



31
32
33
34
35
# File 'lib/perpetuity.rb', line 31

def self.data_source adapter, db_name, options={}
  adapters = { mongodb: MongoDB }

  configure { data_source adapters[adapter].new(options.merge(db: db_name)) }
end

.detect_railsObject

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



38
39
40
# File 'lib/perpetuity.rb', line 38

def self.detect_rails
  require File.expand_path('../perpetuity/rails.rb', __FILE__) if defined? Rails
end

.generate_mapper_for(klass, &block) ⇒ Object



17
18
19
20
21
# 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

.mapper_registryObject



27
28
29
# File 'lib/perpetuity.rb', line 27

def self.mapper_registry
  @mapper_registry ||= MapperRegistry.new
end