Skip to content

Commit

Permalink
[#708] check index name length before creating
Browse files Browse the repository at this point in the history
  • Loading branch information
al2o3cr committed Sep 21, 2011
1 parent d854d52 commit 2395c8c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 2 additions & 0 deletions hobo_fields/lib/generators/hobo/migration/migrator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,8 @@ def change_indexes(model, old_table_name)
def drop_index(table, name)
# see https://hobo.lighthouseapp.com/projects/8324/tickets/566
# for why the rescue exists
max_length = connection.index_name_length
name = name[0,max_length] if name.length > max_length
"remove_index :#{table}, :name => :#{name} rescue ActiveRecord::StatementInvalid"
end

Expand Down
12 changes: 11 additions & 1 deletion hobo_fields/lib/hobo_fields/model/index_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,17 @@ def default_name?
def to_add_statement(new_table_name)
r = "add_index :#{new_table_name}, #{fields.*.to_sym.inspect}"
r += ", :unique => true" if unique
r += ", :name => '#{name}'" unless default_name?
if default_name?
check_name = @model.connection.index_name(self.table, :column => self.fields)
else
check_name = name
end
if check_name.length > @model.connection.index_name_length
r += ", :name => '#{name[0,@model.connection.index_name_length]}'"
$stderr.puts("WARNING: index name #{check_name} too long, trimming")
else
r += ", :name => '#{name}'" unless default_name?
end
r
end

Expand Down

0 comments on commit 2395c8c

Please sign in to comment.