Your Ad Here

Posted By

ctran on 08/21/06


Tagged

rails migration


Versions (?)

Who likes this?

1 person have marked this snippet as a favorite

webstic


auto_drop_migration.rb


 / Published in: Ruby
 

Add a method to ActiveRecord::Migration to automatically drop created tables/indexes within the current migration file.

  1. module AutoDropMigration
  2. module Migration
  3. # Drop all tables and indexes created by the migration
  4. # class AddUser < ActiveRecord::Migration
  5. # def self.up
  6. # ...
  7. # end
  8. #
  9. # def self.down
  10. # drop_created_tables_and_indexes(__FILE__)
  11. # end
  12. #
  13. def drop_created_tables_and_indexes(migration)
  14. File.open(migration) do |fp|
  15. fp.readlines.reverse.each do |line|
  16. if line =~ /^\s+add_index\s+(.*)$/
  17. args = eval("parse_args(#{$1})")
  18. eval("remove_index #{args[0..1].join(',')}") rescue nil
  19. elsif line =~ /^\s+add_foreign_key\s+(.*)$/
  20. eval("remove_foreign_key #{$1}") rescue nil
  21. elsif line =~ /^\s+create_table\s+:([^,]+)(,.*)$/
  22. drop_table($1) rescue nil
  23. end
  24. end
  25. end
  26. end
  27.  
  28. def parse_args(*s)
  29. s
  30. end
  31. end
  32. end
  33.  
  34. ActiveRecord::Migration.extend(AutoDropMigration::Migration)

Report this snippet  

You need to login to post a comment.