0
@@ -27,33 +27,6 @@ module Mack
0
Mack::Database.establish_connection(env)
0
- # abcs = ActiveRecord::Base.configurations
0
- # case abcs[RAILS_ENV]["adapter"]
0
- # when "mysql", "oci", "oracle"
0
- # ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
0
- # File.open("db/#{RAILS_ENV}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
0
- # ENV['PGHOST'] = abcs[RAILS_ENV]["host"] if abcs[RAILS_ENV]["host"]
0
- # ENV['PGPORT'] = abcs[RAILS_ENV]["port"].to_s if abcs[RAILS_ENV]["port"]
0
- # ENV['PGPASSWORD'] = abcs[RAILS_ENV]["password"].to_s if abcs[RAILS_ENV]["password"]
0
- # search_path = abcs[RAILS_ENV]["schema_search_path"]
0
- # search_path = "--schema=#{search_path}" if search_path
0
- # `pg_dump -i -U "#{abcs[RAILS_ENV]["username"]}" -s -x -O -f db/#{RAILS_ENV}_structure.sql #{search_path} #{abcs[RAILS_ENV]["database"]}`
0
- # raise "Error dumping database" if $?.exitstatus == 1
0
- # when "sqlite", "sqlite3"
0
- # dbfile = abcs[RAILS_ENV]["database"] || abcs[RAILS_ENV]["dbfile"]
0
- # `#{abcs[RAILS_ENV]["adapter"]} #{dbfile} .schema > db/#{RAILS_ENV}_structure.sql`
0
- # `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /f db\\#{RAILS_ENV}_structure.sql /q /A /r`
0
- # `scptxfr /s #{abcs[RAILS_ENV]["host"]} /d #{abcs[RAILS_ENV]["database"]} /I /F db\ /q /A /r`
0
- # set_firebird_env(abcs[RAILS_ENV])
0
- # db_string = firebird_db_string(abcs[RAILS_ENV])
0
- # sh "isql -a #{db_string} > db/#{RAILS_ENV}_structure.sql"
0
- # raise "Task not supported by '#{abcs["test"]["adapter"]}'"
0
def self.structure_dump(env = Mack.env, repis = :default)
0
adapter = repository(repis).adapter
0
@@ -61,28 +34,22 @@ module Mack
0
output_file = File.join(Mack.root, "db", "#{env}_#{repis}_schema_structure.sql")
0
case adapter.class.name
0
- sql = "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'"
0
- adapter.query(sql).each do |res|
0
- show = adapter.query("SHOW CREATE TABLE #{res}").first
0
- structure += show.attributes["create table".to_sym]
0
- File.open(output_file, "w") {|f| f.puts structure}
0
- `pg_dump -i -U "#{uri.user}" -s -x -O -f #{output_file} #{uri.basename}`
0
- # setup_temp(uri, "postgres")
0
- # repository(:tmp) do |repo|
0
- # puts "Creating (PostgreSQL): #{uri.basename}"
0
- # repo.adapter.execute "CREATE DATABASE #{uri.basename} ENCODING = 'utf8'"
0
- db_dir = File.join(Mack.root, "db")
0
- `sqlite3 #{File.join(db_dir, uri.basename)} .schema > #{output_file}`
0
- raise "Task not supported for '#{repository(repis).adapter.class.name}'"
0
+ sql = "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'"
0
+ adapter.query(sql).each do |res|
0
+ show = adapter.query("SHOW CREATE TABLE #{res}").first
0
+ structure += show.attributes["create table".to_sym]
0
+ File.open(output_file, "w") {|f| f.puts structure}
0
+ `pg_dump -i -U "#{uri.user}" -s -x -O -f #{output_file} #{uri.basename}`
0
+ db_dir = File.join(Mack.root, "db")
0
+ `sqlite3 #{File.join(db_dir, uri.basename)} .schema > #{output_file}`
0
+ raise "Task not supported for '#{repository(repis).adapter.class.name}'"
0
@@ -100,50 +67,49 @@ module Mack
0
def self.create_database(repis = :default)
0
uri = repository(repis).adapter.uri
0
case repository(repis).adapter.class.name
0
- setup_temp(uri, "mysql")
0
- repository(:tmp) do |repo|
0
- puts "Creating (MySQL): #{uri.basename}"
0
- repo.adapter.execute "CREATE DATABASE `#{uri.basename}` DEFAULT CHARACTER SET `utf8`"
0
- setup_temp(uri, "postgres")
0
- repository(:tmp) do |repo|
0
- puts "Creating (PostgreSQL): #{uri.basename}"
0
- repo.adapter.execute "CREATE DATABASE #{uri.basename} ENCODING = 'utf8'"
0
- db_dir = File.join(Mack.root, "db")
0
- puts "Creating (SQLite3): #{uri.basename}"
0
- FileUtils.mkdir_p(db_dir)
0
- FileUtils.touch(File.join(db_dir, uri.basename))
0
- raise "Task not supported for '#{repository(repis).adapter.class.name}'"
0
+ setup_temp(uri, "mysql")
0
+ repository(:tmp) do |repo|
0
+ puts "Creating (MySQL): #{uri.basename}"
0
+ repo.adapter.execute "CREATE DATABASE `#{uri.basename}` DEFAULT CHARACTER SET `utf8`"
0
+ setup_temp(uri, "postgres")
0
+ repository(:tmp) do |repo|
0
+ puts "Creating (PostgreSQL): #{uri.basename}"
0
+ repo.adapter.execute "CREATE DATABASE #{uri.basename} ENCODING = 'utf8'"
0
+ db_dir = File.join(Mack.root, "db")
0
+ puts "Creating (SQLite3): #{uri.basename}"
0
+ FileUtils.mkdir_p(db_dir)
0
+ FileUtils.touch(File.join(db_dir, uri.basename))
0
+ raise "Task not supported for '#{repository(repis).adapter.class.name}'"
0
def self.drop_database(repis = :default)
0
uri = repository(repis).adapter.uri
0
case repository(repis).adapter.class.name
0
- setup_temp(uri, "mysql")
0
- repository(:tmp) do |repo|
0
- puts "Dropping (MySQL): #{uri.basename}"
0
- repo.adapter.execute "DROP DATABASE IF EXISTS `#{uri.basename}`"
0
- setup_temp(uri, "postgres")
0
- repository(:tmp) do |repo|
0
- puts "Dropping (PostgreSQL): #{uri.basename}"
0
- repo.adapter.execute "DROP DATABASE IF EXISTS #{uri.basename}"
0
- puts "Dropping (SQLite3): #{uri.basename}"
0
- db_dir = File.join(Mack.root, "db")
0
- FileUtils.rm_rf(File.join(db_dir.to_s, uri.basename))
0
- raise "Task not supported for '#{repository(repis).adapter.class.name}'"
0
+ setup_temp(uri, "mysql")
0
+ repository(:tmp) do |repo|
0
+ puts "Dropping (MySQL): #{uri.basename}"
0
+ repo.adapter.execute "DROP DATABASE IF EXISTS `#{uri.basename}`"
0
+ setup_temp(uri, "postgres")
0
+ repository(:tmp) do |repo|
0
+ puts "Dropping (PostgreSQL): #{uri.basename}"
0
+ repo.adapter.execute "DROP DATABASE IF EXISTS #{uri.basename}"
0
+ puts "Dropping (SQLite3): #{uri.basename}"
0
+ db_dir = File.join(Mack.root, "db")
0
+ FileUtils.rm_rf(File.join(db_dir.to_s, uri.basename))
0
+ raise "Task not supported for '#{repository(repis).adapter.class.name}'"