module WCC
  module RakeHelpers

    def self.db_config
      @config ||= db_config_file_data[ENV['RAILS_ENV'] || 'development'] || {}
    end

    def self.db_cmd_with_password(cmd, pw)
      `#{db_cmd_with_password_string(cmd, pw)}`
    end

    def self.db_cmd_with_password_string(cmd, pw)
      %{PGPASSWORD="#{pw}" #{cmd.join(" ")}}
    end

    def self.postgresql?
      db_config["adapter"] == "postgresql"
    end

    def self.mysql?
      db_config["adapter"] == "mysql"
    end

    def self.db_config_file_data
      if defined?(ActiveRecord::Base)
        ActiveRecord::Base.configurations
      else
        YAML.load_file("config/database.yml")
      end
    rescue SystemCallError
      {}
    end

  end
end

namespace :db do

  desc "Drops, creates, migrates, seeds dev DB and prepares test DB"
  task :rebuild => ["db:drop", "db:create", "db:migrate", "db:seed", "db:test:prepare"]

end


module WCC
  module RakeHelpers

    def self.db_config
      @config ||= db_config_file_data[ENV['RAILS_ENV'] || 'development'] || {}
    end

    def self.db_cmd_with_password(cmd, pw)
      `#{db_cmd_with_password_string(cmd, pw)}`
    end

    def self.db_cmd_with_password_string(cmd, pw)
      %{PGPASSWORD="#{pw}" #{cmd.join(" ")}}
    end

    def self.postgresql?
      db_config["adapter"] == "postgresql"
    end

    def self.mysql?
      db_config["adapter"] == "mysql"
    end

    def self.db_config_file_data
      if defined?(ActiveRecord::Base) && ActiveRecord::Base.configurations.present?
        ActiveRecord::Base.configurations
      else
        YAML.load_file("config/database.yml")
      end
    rescue SystemCallError
      {}
    end

  end
end

namespace :db do

  desc "Drops, creates, migrates, seeds dev DB and prepares test DB"
  task :rebuild => ["db:drop", "db:create", "db:migrate", "db:seed", "db:test:prepare"]

end


Add guard against empty AR configs
Add guard against empty AR configs

Sometimes when Rake is loaded for loading tasks AR is loaded, but its
config is not. This now checks for empty config and bails to reading the
YAML file if loaded config is empty.
