Commit efa5699a by Jon Frisby

Merge webhoernchen/master

Conflicts: annotate.gemspec
parents 22e6d49c f209a163
...@@ -52,8 +52,9 @@ module AnnotateModels ...@@ -52,8 +52,9 @@ module AnnotateModels
info = "# #{header}\n#\n" info = "# #{header}\n#\n"
info << "# Table name: #{klass.table_name}\n#\n" info << "# Table name: #{klass.table_name}\n#\n"
max_size = klass.column_names.collect{|name| name.size}.max + 1 max_size = klass.column_names.collect{|name| name.size}.max || 0
klass.columns.each do |col| max_size += 1
klass.columns.sort_by(&:name).each do |col|
attrs = [] attrs = []
attrs << "default(#{quote(col.default)})" unless col.default.nil? attrs << "default(#{quote(col.default)})" unless col.default.nil?
attrs << "not null" unless col.null attrs << "not null" unless col.null
...@@ -74,7 +75,7 @@ module AnnotateModels ...@@ -74,7 +75,7 @@ module AnnotateModels
# Check if the column has indices and print "indexed" if true # Check if the column has indices and print "indexed" if true
# If the indice include another colum, print it too. # If the indice include another colum, print it too.
if options[:simple_indexes] # Check out if this column is indexed if options[:simple_indexes] && klass.table_exists?# Check out if this column is indexed
indices = klass.connection.indexes(klass.table_name) indices = klass.connection.indexes(klass.table_name)
if indices = indices.select { |ind| ind.columns.include? col.name } if indices = indices.select { |ind| ind.columns.include? col.name }
indices.each do |ind| indices.each do |ind|
...@@ -87,7 +88,7 @@ module AnnotateModels ...@@ -87,7 +88,7 @@ module AnnotateModels
info << sprintf("# %-#{max_size}.#{max_size}s:%-15.15s %s", col.name, col_type, attrs.join(", ")).rstrip + "\n" info << sprintf("# %-#{max_size}.#{max_size}s:%-15.15s %s", col.name, col_type, attrs.join(", ")).rstrip + "\n"
end end
if options[:show_indexes] if options[:show_indexes] && klass.table_exists?
info << get_index_info(klass) info << get_index_info(klass)
end end
...@@ -100,7 +101,8 @@ module AnnotateModels ...@@ -100,7 +101,8 @@ module AnnotateModels
indexes = klass.connection.indexes(klass.table_name) indexes = klass.connection.indexes(klass.table_name)
return "" if indexes.empty? return "" if indexes.empty?
max_size = indexes.collect{|index| index.name.size}.max + 1 max_size = indexes.collect{|index| index.name.size}.max || 0
max_size += 1
indexes.each do |index| indexes.each do |index|
index_info << sprintf("# %-#{max_size}.#{max_size}s %s %s", index.name, "(#{index.columns.join(",")})", index.unique ? "UNIQUE" : "").rstrip + "\n" index_info << sprintf("# %-#{max_size}.#{max_size}s %s %s", index.name, "(#{index.columns.join(",")})", index.unique ? "UNIQUE" : "").rstrip + "\n"
end end
...@@ -184,8 +186,8 @@ module AnnotateModels ...@@ -184,8 +186,8 @@ module AnnotateModels
unless options[:exclude_tests] unless options[:exclude_tests]
[ [
File.join(UNIT_TEST_DIR, "#{model_name}_test.rb"), # test find_test_file(UNIT_TEST_DIR, "#{model_name}_test.rb"), # test
File.join(SPEC_MODEL_DIR, "#{model_name}_spec.rb"), # spec find_test_file(SPEC_MODEL_DIR, "#{model_name}_spec.rb"), # spec
].each do |file| ].each do |file|
# todo: add an option "position_in_test" -- or maybe just ask if anyone ever wants different positions for model vs. test vs. fixture # todo: add an option "position_in_test" -- or maybe just ask if anyone ever wants different positions for model vs. test vs. fixture
if annotate_one_file(file, info, options_with_position(options, :position_in_fixture)) if annotate_one_file(file, info, options_with_position(options, :position_in_fixture))
...@@ -334,8 +336,8 @@ module AnnotateModels ...@@ -334,8 +336,8 @@ module AnnotateModels
remove_annotation_of_file(fixture_file_name) if File.exist?(fixture_file_name) remove_annotation_of_file(fixture_file_name) if File.exist?(fixture_file_name)
end end
[ File.join(UNIT_TEST_DIR, "#{klass.name.underscore}_test.rb"), [ find_test_file(UNIT_TEST_DIR, "#{klass.name.underscore}_test.rb"),
File.join(SPEC_MODEL_DIR,"#{klass.name.underscore}_spec.rb")].each do |file| find_test_file(SPEC_MODEL_DIR,"#{klass.name.underscore}_spec.rb")].each do |file|
remove_annotation_of_file(file) if File.exist?(file) remove_annotation_of_file(file) if File.exist?(file)
end end
...@@ -346,5 +348,9 @@ module AnnotateModels ...@@ -346,5 +348,9 @@ module AnnotateModels
end end
puts "Removed annotation from: #{deannotated.join(', ')}" puts "Removed annotation from: #{deannotated.join(', ')}"
end end
def find_test_file(dir, file_name)
Dir.glob(File.join(dir, "**", file_name)).first || File.join(dir, file_name)
end
end end
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment