Module: DatabaseUtils

Defined in:
lib/buzzcore/database_utils.rb

Class Method Summary collapse

Class Method Details

.clear_database(aDbDetails) ⇒ Object



35
36
37
# File 'lib/buzzcore/database_utils.rb', line 35

def self.clear_database(aDbDetails)
	response = POpen4::shell("mysqldump -u #{aDbDetails[:username]} -p#{aDbDetails[:password]} --add-drop-table --no-data #{aDbDetails[:database]} | grep ^DROP | mysql -u #{aDbDetails[:username]} -p#{aDbDetails[:password]} #{aDbDetails[:database]}")
end

.create_database(aDbDetails, aDatabase = nil) ⇒ Object



39
40
41
42
43
# File 'lib/buzzcore/database_utils.rb', line 39

def self.create_database(aDbDetails,aDatabase=nil)
	aDbDetails[:database] = aDatabase if aDatabase
	return false if !aDbDetails[:database]
	response = POpen4::shell("mysqladmin -u #{aDbDetails[:username]} -p#{aDbDetails[:password]} create #{aDbDetails[:database]}")
end

.database_exists(aDbDetails, aDatabase = nil) ⇒ Object

www.cyberciti.biz/faq/how-do-i-empty-mysql-database/

drop all tables : mysqldump -uusername -ppassword -hhost \ –add-drop-table –no-data database | grep ^DROP | \ mysql -uusername -ppassword -hhost database



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/buzzcore/database_utils.rb', line 23

def self.database_exists(aDbDetails,aDatabase=nil)
	aDbDetails[:database] = aDatabase if aDatabase
	return false if !aDbDetails[:database]
	response = POpen4::shell("mysql -u #{aDbDetails[:username]} -p#{aDbDetails[:password]} -e 'use #{aDbDetails[:database]}'") do |r|
		if r[:stderr] && r[:stderr].index("ERROR 1049 ")==0		# Unknown database
			r[:exitcode] = 0 
			return false
		end
	end
	return (response && response[:exitcode]==0)
end

.ensure_empty_database(aDbDetails, aDatabase = nil) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/buzzcore/database_utils.rb', line 45

def self.ensure_empty_database(aDbDetails,aDatabase=nil)
	aDbDetails[:database] = aDatabase if aDatabase
	if database_exists(aDbDetails)
		clear_database(aDbDetails)
	else
		create_database(aDbDetails)
	end
end

.execute_sql_file(filename, aUser = nil, aPassword = nil) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/buzzcore/database_utils.rb', line 4

def self.execute_sql_file(filename,aUser=nil,aPassword=nil)
  conf = ActiveRecord::Base.configurations[RAILS_ENV]
  pw = aPassword || conf['password'].to_s || ''
  user = aUser || conf['username'].to_s || ''
  cmd_line = "mysql -h #{conf['host']} -D #{conf['database']} #{user.empty? ? '' : '-u '+user} #{pw.empty? ? '' : '-p'+pw} <#{filename}"
  if !system(cmd_line)
    raise Exception, "Error executing "+cmd_line
  end
end

.load_database(aDbDetails, aSqlFile) ⇒ Object



54
55
56
57
# File 'lib/buzzcore/database_utils.rb', line 54

def self.load_database(aDbDetails,aSqlFile)
	ensure_empty_database(aDbDetails)
	response = POpen4::shell("mysql -u #{aDbDetails[:username]} -p#{aDbDetails[:password]} #{aDbDetails[:database]} < #{aSqlFile}")
end

.save_database(aDbDetails, aSqlFile) ⇒ Object



59
60
61
# File 'lib/buzzcore/database_utils.rb', line 59

def self.save_database(aDbDetails,aSqlFile)
	response = POpen4::shell("mysqldump --user=#{aDbDetails[:username]} --password=#{aDbDetails[:password]} --skip-extended-insert #{aDbDetails[:database]} > #{aSqlFile}")
end