From edca3a245e6966aa8fa7b8bd136f9ec048dade66 Mon Sep 17 00:00:00 2001 From: Paul Barry Date: Fri, 12 Sep 2008 18:48:13 -0400 Subject: [PATCH] Added ability to specify addtional paths to look for migrations --- activerecord/lib/active_record/migration.rb | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff --git a/activerecord/lib/active_record/migration.rb b/activerecord/lib/active_record/migration.rb index 1d843ff..abb49e0 100644 --- a/activerecord/lib/active_record/migration.rb +++ b/activerecord/lib/active_record/migration.rb @@ -372,6 +372,15 @@ module ActiveRecord class Migrator#:nodoc: class << self + + def additional_migration_paths + @additional_migration_paths ||= [] + end + + def add_path(path) + additional_migration_paths << path + end + def migrate(migrations_path, target_version = nil) case when target_version.nil? then up(migrations_path, target_version) @@ -428,7 +437,7 @@ module ActiveRecord def initialize(direction, migrations_path, target_version = nil) raise StandardError.new("This database does not yet support migrations") unless Base.connection.supports_migrations? Base.connection.initialize_schema_migrations_table - @direction, @migrations_path, @target_version = direction, migrations_path, target_version + @direction, @migrations_path, @target_version = direction, [migrations_path] + self.class.additional_migration_paths, target_version end def current_version @@ -489,7 +498,7 @@ module ActiveRecord def migrations @migrations ||= begin - files = Dir["#{@migrations_path}/[0-9]*_*.rb"] + files = Dir[*@migrations_path.map{|e| "#{e}/[0-9]*_*.rb"}].map{|f| File.expand_path(f)}.uniq migrations = files.inject([]) do |klasses, file| version, name = file.scan(/([0-9]+)_([_a-z0-9]*).rb/).first -- 1.5.4