diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-06-05 13:25:33 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-06-05 13:25:33 -0700 |
commit | e7f1556d0e75c635212273cc5e3cfd113456ff29 (patch) | |
tree | 39e81a1fa01bacb18eb2c396d845ebcd815055b9 /activerecord/lib | |
parent | 53bcbfbdc1eed45cc6615e59d36baf018ab43d96 (diff) | |
parent | df8154c845f8fb251c58f1fd882cc221cfdcbbc2 (diff) | |
download | rails-e7f1556d0e75c635212273cc5e3cfd113456ff29.tar.gz rails-e7f1556d0e75c635212273cc5e3cfd113456ff29.tar.bz2 rails-e7f1556d0e75c635212273cc5e3cfd113456ff29.zip |
Merge branch 'master' into erbout
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb index 67d70b3886..55f67995d1 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -331,15 +331,26 @@ module ActiveRecord end def assume_migrated_upto_version(version) + version = version.to_i sm_table = quote_table_name(ActiveRecord::Migrator.schema_migrations_table_name) + migrated = select_values("SELECT version FROM #{sm_table}").map(&:to_i) versions = Dir['db/migrate/[0-9]*_*.rb'].map do |filename| filename.split('/').last.split('_').first.to_i end - execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')" unless migrated.include?(version.to_i) - (versions - migrated).select { |v| v < version.to_i }.each do |v| - execute "INSERT INTO #{sm_table} (version) VALUES ('#{v}')" + unless migrated.include?(version) + execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')" + end + + inserted = Set.new + (versions - migrated).each do |v| + if inserted.include?(v) + raise "Duplicate migration #{v}. Please renumber your migrations to resolve the conflict." + elsif v < version + execute "INSERT INTO #{sm_table} (version) VALUES ('#{v}')" + inserted << v + end end end |