module DataMapper::Constraints::Adapters::Extension

Public Instance Methods

include_constraint_api(const_name) click to toggle source

Include the corresponding Constraints module into a adapter class

@param [Symbol] const_name

demodulized name of the adapter class to include corresponding
constraints module into

TODO: come up with a better way to include modules into all currently loaded and subsequently loaded Adapters

@api private

# File lib/data_mapper/constraints/adapters/extension.rb, line 15
def include_constraint_api(const_name)
  require constraint_extensions(const_name)

  if Constraints::Adapters.const_defined?(const_name)
    adapter = const_get(const_name)
    constraint_module = Constraints::Adapters.const_get(const_name)
    adapter.class_eval { include constraint_module }
  end
rescue LoadError
  # Silently ignore the fact that no adapter extensions could be required
  # This means that the adapter in use doesn't support constraints
end

Private Instance Methods

const_added(const_name) click to toggle source

@api private

Calls superclass method
# File lib/data_mapper/constraints/adapters/extension.rb, line 38
def const_added(const_name)
  include_constraint_api(const_name)
  super
end
constraint_extensions(const_name) click to toggle source

@api private

# File lib/data_mapper/constraints/adapters/extension.rb, line 31
def constraint_extensions(const_name)
  name = adapter_name(const_name)
  name = 'do' if name == 'dataobjects'
  "data_mapper/constraints/adapters/#{name}_adapter"
end