Sha256: f895edddeb603f209d480b4756c1f335f96197ec5fb05c2b972a220622580b98

Contents?: true

Size: 1.51 KB

Versions: 9

Compression:

Stored size: 1.51 KB

Contents

module ThinkingSphinx::ActiveRecord::DatabaseAdapters
  class << self
    attr_accessor :default

    def adapter_for(model)
      return default.new(model) if default

      adapter = adapter_type_for(model)
      klass   = case adapter
      when :mysql
        MySQLAdapter
      when :postgresql
        PostgreSQLAdapter
      else
        raise "Invalid Database Adapter '#{adapter}': Thinking Sphinx only supports MySQL and PostgreSQL."
      end

      klass.new model
    end

    def adapter_type_for(model)
      class_name = model.connection.class.name
      case class_name.split('::').last
      when 'MysqlAdapter', 'Mysql2Adapter'
        :mysql
      when 'PostgreSQLAdapter'
        :postgresql
      when 'JdbcAdapter'
        adapter_type_for_jdbc(model)
      else
        class_name
      end
    end

    def adapter_type_for_jdbc(model)
      case adapter = model.connection.config[:adapter]
      when 'jdbcmysql'
        :mysql
      when 'jdbcpostgresql'
        :postgresql
      when 'jdbc'
        adapter_type_for_jdbc_plain(adapter, model.connection.config[:url])
      else adapter
      end
    end

    def adapter_type_for_jdbc_plain(adapter, url)
      return adapter unless match = /^jdbc:(?<adapter>mysql|postgresql):\/\//.match(url)

      match[:adapter].to_sym
    end
  end
end

require 'thinking_sphinx/active_record/database_adapters/abstract_adapter'
require 'thinking_sphinx/active_record/database_adapters/mysql_adapter'
require 'thinking_sphinx/active_record/database_adapters/postgresql_adapter'

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
thinking-sphinx-3.2.0 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.1.4 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.1.3 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.1.2 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.1.1 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.1.0 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.0.6 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.0.5 lib/thinking_sphinx/active_record/database_adapters.rb
thinking-sphinx-3.0.4 lib/thinking_sphinx/active_record/database_adapters.rb