aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-06-05 13:25:33 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2008-06-05 13:25:33 -0700
commite7f1556d0e75c635212273cc5e3cfd113456ff29 (patch)
tree39e81a1fa01bacb18eb2c396d845ebcd815055b9 /activerecord
parent53bcbfbdc1eed45cc6615e59d36baf018ab43d96 (diff)
parentdf8154c845f8fb251c58f1fd882cc221cfdcbbc2 (diff)
downloadrails-e7f1556d0e75c635212273cc5e3cfd113456ff29.tar.gz
rails-e7f1556d0e75c635212273cc5e3cfd113456ff29.tar.bz2
rails-e7f1556d0e75c635212273cc5e3cfd113456ff29.zip
Merge branch 'master' into erbout
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb17
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