Sha256: 1fd06f18133d667771a9a7d2d4ee308469112dd47a9ed64ae9c8e34543b73f2e

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module Ardm
  NotImplemented = Class.new(RuntimeError)

  # Check which ORM is loaded in Ardm.
  #
  # @api public
  def self.orm
    @orm ||= :active_record
  end

  # Set which orm to load.
  #
  # @api public
  def self.orm=(orm)
    if defined?(Ardm::ActiveRecord) || defined?(Ardm::DataMapper)
      raise "Cannot change Ardm.orm when #{orm} libs are already loaded."
    end

    @orm = case orm.to_s
           when /active_?record/, '' then :active_record
           when /data_?mapper/       then :data_mapper
           else raise "Unknown ENV['ORM']: #{ENV['ORM']}"
           end
  end

  # Return true if Ardm has loaded ActiveRecord ORM.
  #
  # @api public
  def self.active_record?
    orm == :active_record
  end

  # Return true if Ardm has loaded DataMapper ORM.
  #
  # @api public
  def self.data_mapper?
    orm == :data_mapper
  end

  # Yield if Ardm has loaded ActiveRecord ORM.
  #
  # @api public
  def self.active_record
    yield if block_given? && active_record?
  end

  # Yield if Ardm has loaded DataMapper ORM.
  #
  # @api public
  def self.data_mapper
    yield if block_given? && data_mapper?
  end

  def self.lib
    "ardm/#{orm}"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ardm-0.1.0 lib/ardm.rb