레일스에서 migration 파일이 계속 늘어나면 어떻게 해야 하나요?

조회수 1207회

레일스에서 프로젝트를 하다보면 migration 파일이 계속 늘어나쟎아요. 예를 들어 서비스 운영이 몇년 되면 파일이 수천개도 될꺼 같은데, 이럴때 어떻게 줄일 수 있는 방법이 있나요?

1 답변

  • 좋아요

    7

    싫어요
    채택 취소하기

    Ruby 스키마 포맷(db/schema.rb)을 사용하는 경우, 최신 Schema를 Dump 받은 다음 새로운 migration 파일을 생성 한 뒤, schema.rb 안에 있는 코드를 up method에 모두 넣으시고 migration의 timestamp를 해당 schema가 생성된 timestamp로 변경해줍니다. 그 다음 이전 migration 파일들을 삭제하시면 됩니다.

    class SquashMigration < ActiveRecord::Migration
      def up
        create_table "table", :force => true do |t|
        ...
      end
    
      def down
        raise ActiveRecord::IrreversibleMigration
      end
    end
    

    schema.rb 파일 상단에 있는 version 값으로 해당 migration의 timestamp를 변경하시면 됩니다.

    ActiveRecord::Schema.define(:version => 20150409024149) do
      ...
    end
    

    Sql 스키마 포맷(db/structure.sql)을 사용하시는 경우, 위와 동일하나

    db/structure.sql 파일을 Copy 하신 다음 (e.g. structure_backup.sql)

    class SquashMigration < ActiveRecord::Migration
      def up
        sql_data = File.read('db/structure_backup.sql')
        ActiveRecord::Base.connection.execute sql_data
      end
    
      def down
        raise ActiveRecord::IrreversibleMigration
      end
    end
    

    이렇게 하시면 될 거 같습니다.

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.