Sha256: 1cc3fb4b1b31c79ba2f9f42b7d2da956710b3418a3ea6a5c67941e0d0cea533a

Contents?: true

Size: 947 Bytes

Versions: 1

Compression:

Stored size: 947 Bytes

Contents

module PolymorphicConstraints
  class Adapter
    class_attribute :registered
    self.registered = {}

    class << self
      def register(adapter_name, file_name)
        registered[adapter_name] = file_name
      end

      def load!
        if registered.key?(configured_name)
          require registered[configured_name]
        else
          p "Database adapter #{configured_name} not supported. Use:\n" +
                "PolymorphicConstraints::Adapter.register '#{configured_name}', 'path/to/adapter'"
        end
      end

      def configured_name
        @configured_name ||= ActiveRecord::Base.connection_pool.spec.config[:adapter]
      end

      def safe_include(adapter_class_name, adapter_ext)
        ActiveRecord::ConnectionAdapters.const_get(adapter_class_name).class_eval do
          unless ancestors.include? adapter_ext
            include adapter_ext
          end
        end
      rescue
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
polymorphic_constraints-1.0.0 lib/polymorphic_constraints/adapter.rb