class Rake::TaskMigration::Migrator
Attributes
tasks[R]
Public Class Methods
get_all_tasks()
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 9 def get_all_tasks RakeTaskMigration.all.map { |x| x.version.to_s }.sort end
migrate(tasks)
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 5 def migrate(tasks) new(tasks).migrate end
new(tasks)
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 16 def initialize(tasks) @tasks = Array(tasks) end
Public Instance Methods
migrate()
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 20 def migrate pending_tasks.each { |task| migrate_task(task.name.to_s) } end
Private Instance Methods
announce(text)
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 68 def announce(text) length = [0, 75 - text.length].max write format('== %s %s', text, '=' * length) end
invoke(task)
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 47 def invoke(task) Rake::Task[task].invoke end
load_migrated()
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 60 def load_migrated @migrated_tasks = Set.new(self.class.get_all_tasks) end
migrate_task(task)
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 26 def migrate_task(task) fail "#{task} has already been migrated." if RakeTaskMigration.where(version: task).first announce "#{task}: migrating" ActiveRecord::Base.transaction do time = Benchmark.measure do invoke(task) end # Create record migration = RakeTaskMigration.new migration.version = task migration.runtime = time.real.to_i migration.migrated_on = DateTime.now migration.save! announce "#{task}: migrated (#{format('%.4fs', time.real)})" end end
migrated()
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 56 def migrated @migrated_tasks || load_migrated end
pending_tasks()
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 51 def pending_tasks already_migrated = migrated tasks.reject { |task| already_migrated.include?(task.name) } end
write(text)
click to toggle source
# File lib/rake/task_migration/migrator.rb, line 64 def write(text) puts text end