class DbHelper

Public Class Methods

dump!(options={}) click to toggle source
# File lib/db_helper.rb, line 34
def self.dump!(options={})
  @db_config.keys.each do |env|
    if ((options[:branch]==:all) || env.to_s.start_with?(options[:branch].to_s))
      param = @db_config[env]
      dumpname = options[:file]
      dumpname = File.join([@dump_store, dumpname]) unless options[:relative]
      p "dump <#{env}> to file: #{dumpname}"
      # pp param
      system "
        PGPASSWORD='#{param[:password]}'
        pg_dump -U #{param[:username]} -h #{param[:host]} #{param[:database]} > #{dumpname}
        "
    end
  end
end
fork!(options={}) click to toggle source
# File lib/db_helper.rb, line 50
def self.fork!(options={})
  dumps = {}
  @db_config.keys.each do |env|
    if ((options[:branch]==:all) || env.to_s.start_with?(options[:branch].to_s))
      param = @db_config[env]
      timestamp = Time.now.strftime('%Y%m%dT%H%M%S%z')
      dumps[env] = File.join([@dump_store, "#{param[:database]}_#{timestamp}.sql"])
      p "dump <#{env}> to file: #{dumps[env]}"
      # pp param
      system "
        PGPASSWORD='#{param[:password]}'
        pg_dump -U #{param[:username]} -h #{param[:host]} #{param[:database]} > #{dumps[env]}
        "
      new_db_name = options[:name] + param[:database].gsub(/.+?(_db)?(_test)?(_db)?/i, '\1\2\3')
      @db_config[env][:database] = new_db_name

    end
  end

  p "All backups created!"
  save_db_config!

  @db_config.keys.each do |env|
    if ((options[:branch]==:all) || env.to_s.start_with?(options[:branch].to_s))
      param = @db_config[env]
      p "load <#{env}> from file: #{dumps[env]}"
      # pp param
      system "RAILS_ENV=#{env} bundle exec rake db:drop"
      system "RAILS_ENV=#{env} bundle exec rake db:create"
      system "RAILS_ENV=#{env} bundle exec rake db:migrate"
      system "
        PGPASSWORD='#{param[:password]}'
        psql -U #{param[:username]} -h #{param[:host]} #{param[:database]} < #{dumps[env]}
        "
    end
  end    
end
get_configs() click to toggle source
# File lib/db_helper.rb, line 9
def self.get_configs()
  @working_dir = Dir.pwd
  @sysdir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
  unless File.exists?(File.join(@sysdir, 'config.yml'))
    p "No config file. Creating default one."
    FileUtils.cp(File.join(@sysdir, 'config.yml.sample'), File.join(@sysdir, 'config.yml'))
    p "Please correct your config file at:"
    p "#{File.join(@sysdir, 'config.yml')}"
  end

  @config = get_hash_file File.join(@sysdir, 'config.yml')

  @db_yml_file = @config[:db_yml_file]
  @db_sample_file = @config[:db_sample_file]
  @dump_store = @config[:dump_store]

  @db_config = get_hash_file File.join(@working_dir, @db_yml_file)
  # pp @config
  # pp @db_config
end
load!(options={}) click to toggle source
# File lib/db_helper.rb, line 88
def self.load!(options={})
  @db_config.keys.each do |env|
    if ((options[:branch]==:all) || env.to_s.start_with?(options[:branch].to_s))
      param = @db_config[env]
      dumpname = options[:file]
      dumpname = File.join([@dump_store, dumpname]) unless options[:relative]
      p "load <#{env}> from file: #{dumpname}"
      # pp param
      if options[:clean]
        system "bundle exec rake db:drop"
        system "bundle exec rake db:create"
        system "bundle exec rake db:migrate"
      end
      system "
        PGPASSWORD='#{param[:password]}'
        psql -U #{param[:username]} -h #{param[:host]} #{param[:database]} < #{dumpname}
        "
    end
  end
end
save_db_config!() click to toggle source
# File lib/db_helper.rb, line 30
def self.save_db_config!()
  put_hash_file File.join(@working_dir, @db_yml_file), @db_config
end