Sha256: a811628188ebedcda70acf26732ba026f1bf8d2716be2e71a3527233bbe90021

Contents?: true

Size: 751 Bytes

Versions: 2

Compression:

Stored size: 751 Bytes

Contents

require 'active_support/core_ext/string/inflections'

module DatabaseCleaner
  class ORMAutodetector
    ORMS = %w[ActiveRecord DataMapper MongoMapper Mongoid CouchPotato Sequel Moped Ohm Redis Neo4j]

    def orm
      @autodetected = true
      autodetected_orm or raise no_orm_detected_error
      autodetected_orm.underscore.to_sym
    end

    def autodetected?
      !!@autodetected
    end

    private

    def autodetected_orm
      ORMS.find do |orm|
        Kernel.const_get(orm) rescue next
      end
    end

    def no_orm_detected_error
      orm_list = ORMS.join(", ").sub(ORMS.last, "or #{ORMS.last}")
      NoORMDetected.new("No known ORM was detected!  Is #{orm_list} loaded?")
    end
  end
  private_constant :ORMAutodetector
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
database_cleaner-1.8.0 lib/database_cleaner/orm_autodetector.rb
database_cleaner-1.8.0.beta lib/database_cleaner/orm_autodetector.rb