레일스에서 migration 파일이 계속 늘어나면 어떻게 해야 하나요?
조회수 1679회
레일스에서 프로젝트를 하다보면 migration 파일이 계속 늘어나쟎아요. 예를 들어 서비스 운영이 몇년 되면 파일이 수천개도 될꺼 같은데, 이럴때 어떻게 줄일 수 있는 방법이 있나요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
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
이렇게 하시면 될 거 같습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 -
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
- https://github.com/jalkoby/squasher 라는 old migrations clean up하는 Gem도 있으니 참고 바랍니다. 알 수 없는 사용자 2016.3.30 13:33
- 자세한 답변 너무 감사드립니다! 알 수 없는 사용자 2016.3.30 14:19
-
댓글 입력