makes the AR deletion strategy aware of the needed JdbcAdapter workaround

This commit is contained in:
Ben Mabey 2010-10-25 11:48:33 -06:00
parent 4663b23779
commit 9b4a52bf11
2 changed files with 12 additions and 18 deletions

View File

@ -3,17 +3,13 @@ require 'active_record/connection_adapters/abstract_adapter'
require "database_cleaner/generic/truncation"
require 'database_cleaner/active_record/base'
require 'database_cleaner/active_record/truncation'
# This file may seem to have duplication with that of truncation, but by keeping them separate
# we avoiding loading this code when it is not being used (which is the common case).
module ActiveRecord
module ConnectionAdapters
class AbstractAdapter
end
class SQLiteAdapter < AbstractAdapter
end
class MysqlAdapter < AbstractAdapter
class MysqlAdapter < MYSQL_ADAPTER_PARENT
def delete_table(table_name)
execute("DELETE FROM #{quote_table_name(table_name)};")
end
@ -25,12 +21,6 @@ module ActiveRecord
end
end
class SQLite3Adapter < SQLiteAdapter
def delete_table(table_name)
execute("DELETE FROM #{quote_table_name(table_name)};")
end
end
class JdbcAdapter < AbstractAdapter
def delete_table(table_name)
execute("DELETE FROM #{quote_table_name(table_name)};")

View File

@ -7,16 +7,19 @@ module ActiveRecord
module ConnectionAdapters
# Activerecord-jdbc-adapter defines class dependencies a bit differently - if it is present, confirm to ArJdbc hierarchy to avoid 'superclass mismatch' errors.
USE_ARJDBC_WORKAROUND = defined?(ArJdbc)
class AbstractAdapter
end
unless USE_ARJDBC_WORKAROUND
class SQLiteAdapter < AbstractAdapter
end
end
class MysqlAdapter < (USE_ARJDBC_WORKAROUND ? JdbcAdapter : AbstractAdapter)
MYSQL_ADAPTER_PARENT = USE_ARJDBC_WORKAROUND ? JdbcAdapter : AbstractAdapter
SQLITE_ADAPTER_PARENT = USE_ARJDBC_WORKAROUND ? JdbcAdapter : SQLiteAdapter
class MysqlAdapter < MYSQL_ADAPTER_PARENT
def truncate_table(table_name)
execute("TRUNCATE TABLE #{quote_table_name(table_name)};")
end
@ -28,10 +31,11 @@ module ActiveRecord
end
end
class SQLite3Adapter < (USE_ARJDBC_WORKAROUND ? JdbcAdapter : SQLiteAdapter)
def truncate_table(table_name)
class SQLite3Adapter < SQLITE_ADAPTER_PARENT
def delete_table(table_name)
execute("DELETE FROM #{quote_table_name(table_name)};")
end
alias truncate_table delete_table
end
class JdbcAdapter < AbstractAdapter