Rake::Task.clear
namespace :railties do
namespace :install do # desc "Copies missing migrations from Railties (e.g. engines). You can specify Railties to use with FROM=railtie1,railtie2" task :migrations => :'db:load_config' do to_load = ENV['FROM'].blank? ? :all : ENV['FROM'].split(",").map {|n| n.strip } railties = {} namespace = '' Rails.application.migration_railties.each do |railtie| next unless to_load == :all || to_load.include?(railtie.railtie_name) namespace = railtie.railtie_name if railtie.respond_to?(:paths) && (path = railtie.paths['db/migrate'].first) railties[railtie.railtie_name] = path end end on_skip = Proc.new do |name, migration| puts "NOTE: Migration #{migration.basename} from #{name} has been skipped. Migration with the same name already exists." end on_copy = Proc.new do |name, migration| puts "Copied migration #{migration.basename} from #{name}" end ActiveRecord::Migration.copy("#{ActiveRecord::Migrator.migrations_paths.first}/#{namespace}", railties, :on_skip => on_skip, :on_copy => on_copy) end end
end