As title, too bad I don''t have experience on this one, anyone could
help?
Here is my patch:
desc ''Runs the "up" for a given migration
VERSION.''
task :up => :environment do
version if ENV["NAME"]
get_migrate_task_version(ENV["NAME"])
else
ENV["VERSION"] ? ENV["VERSION"].to_i : nil
end
raise "VERSION or NAME is required" unless version
ActiveRecord::Migrator.run(:up, "db/migrate/", version)
Rake::Task["db:schema:dump"].invoke if
ActiveRecord::Base.schema_format == :ruby
end
desc ''Runs the "down" for a given migration
VERSION.''
task :down => :environment do
version= ""
if ENV["NAME"]
version= get_migrate_task_version(ENV["NAME"])
else
ENV["VERSION"] ? ENV["VERSION"].to_i : nil
end
raise "VERSION or NAME is required" unless version
ActiveRecord::Migrator.run(:down, "db/migrate/", version)
Rake::Task["db:schema:dump"].invoke if
ActiveRecord::Base.schema_format == :ruby
end
def get_migrate_task_version(task_name)
files=Dir["#{RAILS_ROOT}/db/migrate/*_#{task_name.underscore}.rb"]
raise "More than one task found" if files.length>1
raise "No task found" if files.length==0
files[0] =~ /[[:digit:]]+/
$~[0].to_i
end
What it does is to allow you use rake db:migrate:down/up
NAME=YourMigrationTaskName instead of trying to dig your version with
grep etc... it would only run when a precise migration can be found so
to avoid mis-executed migration.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---