Sha256: 3468c30df1114de33af1134cd5780a22e8a168a63012e4634296bef4107c7730

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

require 'rake'
namespace :db do
  

  
  desc "Migrate the database through scripts in db/migrations."
  task :migrate => "mack:environment" do
    require 'migration_runner'
    include DataMapper::Types
    DataMapper::MigrationRunner.reset!
    migration_files.each { |mig| load mig }
    DataMapper::MigrationRunner.migrate_up!
  end # migrate
  
  desc "Rolls the schema back to the previous version. Specify the number of steps with STEP=n."
  task :rollback => ["mack:environment", "db:abort_if_pending_migrations"] do
    require 'dm-core/types'
    require 'migration_runner'
    include DataMapper::Types
    DataMapper::MigrationRunner.reset!
    migration_files.each { |mig| load mig }
    step = (ENV["STEP"] || 1).to_i
    migrations = DataMapper::MigrationRunner.migrations.sort.reverse
    step.times do |i|
      migrations[migrations.size - (i + 1)].perform_down
    end
  end # rollback
  
  desc "Raises an error if there are pending migrations."
  task :abort_if_pending_migrations do
    require 'dm-core/types'
    require 'migration_runner'
    migration_files.each { |mig| load mig }
    DataMapper::MigrationRunner.migrations.each do |mig|
      raise Mack::Errors::UnrunMigrations.new(mig.name) if mig.send("needs_up?")
    end
    DataMapper::MigrationRunner.migrations.clear
  end
  
  private
  
  def migration_files
    Dir.glob(File.join(Mack.root, "db", "migrations", "*.rb"))
  end
  
end # db

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mack-data_mapper-0.6.1.1 lib/mack-data_mapper/tasks/db_migration_tasks.rake
mack-data_mapper-0.6.1.2 lib/mack-data_mapper/tasks/db_migration_tasks.rake
mack-data_mapper-0.6.1 lib/mack-data_mapper/tasks/db_migration_tasks.rake