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


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

  • 2016년 03월 30일에 작성됨

조회수 259


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사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close