2004-11-23 20:04:44 -05:00
|
|
|
print "Using native SQlite\n"
|
|
|
|
require 'fixtures/course'
|
|
|
|
require 'logger'
|
|
|
|
ActiveRecord::Base.logger = Logger.new("debug.log")
|
|
|
|
|
2005-02-17 14:28:13 -05:00
|
|
|
class SqliteError < StandardError
|
|
|
|
end
|
|
|
|
|
2004-11-23 20:04:44 -05:00
|
|
|
BASE_DIR = File.expand_path(File.dirname(__FILE__) + '/../../fixtures')
|
|
|
|
sqlite_test_db = "#{BASE_DIR}/fixture_database.sqlite"
|
|
|
|
sqlite_test_db2 = "#{BASE_DIR}/fixture_database_2.sqlite"
|
|
|
|
|
|
|
|
def make_connection(clazz, db_file, db_definitions_file)
|
|
|
|
unless File.exist?(db_file)
|
|
|
|
puts "SQLite database not found at #{db_file}. Rebuilding it."
|
2005-03-14 18:48:39 -05:00
|
|
|
sqlite_command = %Q{sqlite #{db_file} "create table a (a integer); drop table a;"}
|
2004-11-23 20:04:44 -05:00
|
|
|
puts "Executing '#{sqlite_command}'"
|
2005-02-17 14:28:13 -05:00
|
|
|
raise SqliteError.new("Seems that there is no sqlite executable available") unless system(sqlite_command)
|
2004-11-23 20:04:44 -05:00
|
|
|
clazz.establish_connection(
|
|
|
|
:adapter => "sqlite",
|
|
|
|
:dbfile => db_file)
|
|
|
|
script = File.read("#{BASE_DIR}/db_definitions/#{db_definitions_file}")
|
|
|
|
# SQLite-Ruby has problems with semi-colon separated commands, so split and execute one at a time
|
|
|
|
script.split(';').each do
|
|
|
|
|command|
|
|
|
|
clazz.connection.execute(command) unless command.strip.empty?
|
|
|
|
end
|
|
|
|
else
|
|
|
|
clazz.establish_connection(
|
|
|
|
:adapter => "sqlite",
|
|
|
|
:dbfile => db_file)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
make_connection(ActiveRecord::Base, sqlite_test_db, 'sqlite.sql')
|
|
|
|
make_connection(Course, sqlite_test_db2, 'sqlite2.sql')
|
|
|
|
|