module ActiveRecord::Tasks::DatabaseTasks

Public Instance Methods

create(*arguments) click to toggle source
# File config/initializers/extensions/rails/activerecord/lib/active_record/tasks/database_tasks.rb, line 44
def create(*arguments)
  configuration = arguments.first
  begin
    class_for_adapter(configuration['adapter']).new(*arguments).create
  rescue DatabaseAlreadyExists
    $stderr.puts "#{configuration['database']} already exists"
  rescue Exception => error
    $stderr.puts error, *(error.backtrace)
    $stderr.puts "Couldn't create database for #{configuration.inspect}"
  else
    $stderr.puts "Database #{configuration['database']} has been created"
  end
end
migrate() click to toggle source
# File config/initializers/extensions/rails/activerecord/lib/active_record/tasks/database_tasks.rb, line 7
def migrate
  verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
  scope   = ENV['SCOPE']

  migrations_paths.each do |migration_path|
    verbose_was, Migration.verbose = Migration.verbose, verbose
    namespace = File.basename migration_path
    db_configs = Base.configurations
    Base.establish_connection db_configs[namespace][Rails.env] unless namespace === "migrate"
    begin
      Migrator.migrate(migration_path, version) do |migration|
        scope.blank? || scope == migration.scope
      end
    ensure
      Migration.verbose = verbose_was
    end
  end
end
migrations_paths() click to toggle source
# File config/initializers/extensions/rails/activerecord/lib/active_record/tasks/database_tasks.rb, line 27
def migrations_paths
  paths = Rails.application.paths['db/migrate'].to_a
  root_path = paths.first

  namespaces = ENV['MIGRATION_NAMESPACE'] ||
  ENV['MIGRATION_NAMESPACES'] ?
    (ENV['MIGRATION_NAMESPACE'] ||
    ENV['MIGRATION_NAMESPACES']).split(",").flatten :
  []

  namespaces.each do |namespace|
    paths << "#{root_path}/#{namespace.strip}"
  end

  @migrations_paths ||= paths
end

Private Instance Methods

each_current_configuration(environment) { |configuration| ... } click to toggle source
# File config/initializers/extensions/rails/activerecord/lib/active_record/tasks/database_tasks.rb, line 60
def each_current_configuration(environment)
  environments = [environment]
  # add test environment only if no RAILS_ENV was specified.
  environments << 'test' if environment == 'development' &&
    ENV['RAILS_ENV'].nil?

  configurations = []

  db_configs = Base.configurations
  namespaces = ENV['MIGRATION_NAMESPACE'] ||
  ENV['MIGRATION_NAMESPACES'] ?
    (ENV['MIGRATION_NAMESPACE'] ||
    ENV['MIGRATION_NAMESPACES']).split(",").flatten :
  []

  namespaces_configs = db_configs.values_at(*namespaces)
  if namespaces_configs.any?
    namespaces_configs.each do |namespace|
      configurations << namespace.values_at(*environments)
    end
  end

  configurations << db_configs.values_at(*environments)
  configurations.flatten.compact.each do |configuration|
    yield configuration unless configuration['database'].blank?
  end
end