annotate_modelsをちょっと改造

annotate_model便利なんだけど、変更されてないテーブルのモデルとかフィクスチャとかのヘッダも書き換えるので、うっかり実行するとものすごい勢いで他の人の変更と衝突して辛い。ので、無理やり改造。

vendor/plugins/annotate_models/lib/annotate_models.rb

  def self.annotate_one_file(file_name, info_block)                                      
    if File.exist?(file_name)                                                            
      content = File.read(file_name)                                                     
                                                                                         
      old_info_block = content =~ /^# #{PREFIX}.*?\n(#.*\n)*\n/ ? $& : ''                
      unless info_block.sub(/version: \d+/, '') == old_info_block.sub(/version: \d+/, '')
        puts "Execute annotating"                                                        
                                                                                         
        # Remove old schema info                                                         
        content.sub!(/^# #{PREFIX}.*?\n(#.*\n)*\n/, '')                                  
                                                                                         
        # Write it back                                                                  
        File.open(file_name, "w") { |f| f.puts info_block + content }                    
      end                                                                                
    end                                                                                  
  end                                                                                    

スキーマが変更されてなければファイルも書き換わらないはず。ただ、ヘッダコメント内のSchema versionの値は古いままになるけど。