Sha256: 48fef39b62b879fff1cc1e6355b5f4b8d98e7a4364ca18951551e43a926dd20d

Contents?: true

Size: 1.39 KB

Versions: 2

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

2 entries across 2 versions & 1 rubygems

Version Path
mack-data_mapper-0.6.0 lib/tasks/db_migration_tasks.rake
mack-data_mapper-0.6.0.1 lib/tasks/db_migration_tasks.rake