Revision: 910
Updated Code
at September 15, 2006 15:31 by ctran
Updated Code
module AutoDropMigration module Migration # Drop all tables and indexes created by the migration # class AddUser < ActiveRecord::Migration # def self.up # ... # end # # def self.down # drop_created_tables_and_indexes(__FILE__) # end # def drop_created_tables_and_indexes(migration) File.open(migration) do |fp| fp.readlines.reverse.each do |line| if line =~ /^\s+add_index\s+(.*)$/ args = eval("parse_args(#{$1})") eval("remove_index #{args[0..1].join(',')}") rescue nil elsif line =~ /^\s+add_foreign_key\s+(.*)$/ eval("remove_foreign_key #{$1}") rescue nil elsif line =~ /^\s+create_table\s+:([^,]+)(,.*)$/ drop_table($1) rescue nil end end end end def parse_args(*s) s end end end ActiveRecord::Migration.extend(AutoDropMigration::Migration)
Revision: 909
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 21, 2006 00:25 by ctran
Initial Code
module AutoDropMigration module Migration # Drop all tables and indexes created by the migration # class AddUser < ActiveRecord::Migration # def self.up # ... # end # # def self.down # drop_created_tables_and_indexes(__FILE__) # end # def drop_created_tables_and_indexes(migration) File.open(migration) do |fp| fp.readlines.reverse.each do |line| if line =~ /^\s+create_table\s+:([^,]+)(,.*)$/ drop_table($1) elsif line =~ /^\s+add_foreign_key\s+(.*)$/ remove_foreign_key(*(parse_args($1))) elsif line =~ /^\s+add_index\s+(.*)$/ end end end end def parse_args(args) args.split(',').map { |e| e.strip!; e.delete!(':'); e } end end end
Initial URL
Initial Description
Add a method to ActiveRecord::Migration to automatically drop created tables/indexes within the current migration file.
Initial Title
auto_drop_migration.rb
Initial Tags
rails
Initial Language
Ruby