From 5d2c9f0caa76d25978522c7ba54a8020e90153ac Mon Sep 17 00:00:00 2001 From: Jordi Bunster Date: Fri, 24 Oct 2008 12:49:06 -0400 Subject: [PATCH] Ensure indices don't flip order in schema.rb --- activerecord/lib/active_record/schema_dumper.rb | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-) diff --git a/activerecord/lib/active_record/schema_dumper.rb b/activerecord/lib/active_record/schema_dumper.rb index 4f96e22..4f868df 100644 --- a/activerecord/lib/active_record/schema_dumper.rb +++ b/activerecord/lib/active_record/schema_dumper.rb @@ -159,13 +159,20 @@ HEADER end def indexes(table, stream) - indexes = @connection.indexes(table) - indexes.each do |index| - stream.print " add_index #{index.table.inspect}, #{index.columns.inspect}, :name => #{index.name.inspect}" - stream.print ", :unique => true" if index.unique + if (indexes = @connection.indexes(table)).any? + + add_index_statements = indexes.map do |index| + statment_parts = [ ('add_index ' + index.table.inspect) ] + statment_parts << index.columns.inspect + statment_parts << (':name => ' + index.name.inspect) + statment_parts << ':unique => true' if index.unique + + ' ' + statment_parts.join(', ') + end + + stream.puts add_index_statements.sort.join("\n") stream.puts end - stream.puts unless indexes.empty? end end end -- 1.6.0.2