class Baza::Cloner

Public Class Methods

from_active_record_connection(connection) click to toggle source
# File lib/baza/cloner.rb, line 2
def self.from_active_record_connection(connection)
  if connection.class.name.include?("Mysql2Adapter")
    connection = connection.instance_variable_get(:@connection)

    config = connection.instance_variable_get(:@query_options)
    config ||= connection.instance_variable_get(:@config)

    db_args = {
      type: :mysql2,
      host: config[:host],
      user: config[:username],
      pass: config[:password],
      db: config[:database]
    }

    Baza::Db.new(db_args)
  elsif connection.class.name.include?("MysqlAdapter")
    connection = connection.instance_variable_get(:@connection)
    connection = connection.instance_variable_get(:@connection) if RUBY_PLATFORM == "java"

    db_args = {
      type: :mysql,
      conn: connection
    }

    Baza::Db.new(db_args)
  elsif connection.class.name.include?("PostgreSQLAdapter")
    connection = connection.instance_variable_get(:@connection)
    connection = connection.instance_variable_get(:@connection) if RUBY_PLATFORM == "java"

    db_args = {
      type: :pg,
      conn: connection
    }

    Baza::Db.new(db_args)
  else
    raise "Unsupported adapter: #{connection.class.name}"
  end
end