aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/railties/databases.rake
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-07-26 14:21:30 +0200
committerPiotr Sarnacki <drogus@gmail.com>2010-09-03 22:59:09 +0200
commit43a2aef3165793d9265aea1257063a60766f2226 (patch)
tree15ddf97940fdd7cf94c5db7a0ffb59dad713b5af /activerecord/lib/active_record/railties/databases.rake
parent75f8ac6ea71e4b2337f870b91ac05df98f33a8d2 (diff)
downloadrails-43a2aef3165793d9265aea1257063a60766f2226.tar.gz
rails-43a2aef3165793d9265aea1257063a60766f2226.tar.bz2
rails-43a2aef3165793d9265aea1257063a60766f2226.zip
rake db:copy_migrations task, which copies railties migrations into application's db/migrate directory
Diffstat (limited to 'activerecord/lib/active_record/railties/databases.rake')
-rw-r--r--activerecord/lib/active_record/railties/databases.rake22
1 files changed, 22 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/railties/databases.rake b/activerecord/lib/active_record/railties/databases.rake
index f8a5114870..aedda26ba5 100644
--- a/activerecord/lib/active_record/railties/databases.rake
+++ b/activerecord/lib/active_record/railties/databases.rake
@@ -5,6 +5,28 @@ namespace :db do
ActiveRecord::Migrator.migrations_path = Rails.application.config.paths.db.migrate.to_a.first
end
+ desc "Copies missing migrations from Railties (e.g. plugins, engines). You can specify Railties to use with FROM=railtie1,railtie2"
+ task :copy_migrations => :load_config do
+ to_load = ENV["FROM"].blank? ? :all : ENV["FROM"].split(",").map {|n| n.strip }
+ railties = {}
+ Rails.application.railties.all do |railtie|
+ next unless to_load == :all || to_load.include?(railtie.railtie_name)
+
+ if railtie.config.respond_to?(:paths) && railtie.config.paths.db
+ railties[railtie.railtie_name] = railtie.config.paths.db.migrate.to_a.first
+ end
+ end
+
+ copied = ActiveRecord::Migration.copy(ActiveRecord::Migrator.migrations_path, railties)
+
+ if copied.blank?
+ puts "No migrations were copied, project is up to date."
+ else
+ puts "The following migrations were copied:"
+ puts copied.map{ |path| File.basename(path) }.join("\n")
+ end
+ end
+
namespace :create do
# desc 'Create all the local databases defined in config/database.yml'
task :all => :load_config do