0

나는 이눔 상당히 새로운 그리고 난 등, 자식을 분기 마이그레이션을 실행 및 기능 스키마를 유지는

여기 목록입니다, git branch, git checkout 같은 명령을 사용하여 동시에 서로 다른 기능을 구축하기 위해 여러 가지를 사용하기 시작했습니다 단계 내가 찍은 :

git checkout feature1 
make some changes that include migrations 
rake db:migrate 
rake db:commit to feature1 with schema.rb 

git checkout feature2 
# at this point my schema appears to revert to pre-feature1 
make some changes that involve a new migration 
rake db:migrate 
# schema now shows changes from BOTH feature1 and feature2. 

feature2에 rake db:migrate을 실행시키는 행위에 내가 feature1과 feature2 모두를 뒷받침 내 로컬 데이터베이스를 반영 상상 스키마를 새로 고칩니다. 각 기능이 자체 스키마를 가질 수 있도록 이러한 마이그레이션을 별도로 유지하기 위해 내가 할 수있는 일을 알고 있습니까? 아니면 분기 된 마이그레이션을 처리 할 수있는 또 다른 방법이 있습니까?

답변

0

워크 플로에 대해 생각해보십시오. feature1 분기에는 feature1의 schema.rb가 있지만 sqlite를 사용하는 경우 데이터베이스가 feature2 분기에서 업데이트되었습니다. feature1에서 응용 프로그램을 중단시키는 feature2를 변경 한 경우 feature1에 대한 데이터베이스를 다시 작성해야합니다.

데이터베이스를 다시 작성하지 않으려면 feature2 분기에서 마이그레이션을 실행하기 전에 다른 데이터베이스를 사용하도록 레일스 응용 프로그램을 구성해야합니다.

편집 : 다른 옵션은 gitignore 파일을 변경하고 repo에 추가하여 git에 데이터베이스를 추가하는 것입니다. 그렇다면 git를 사용하여 데이터베이스를 되돌릴 수 있습니다.

+0

feature2에서 'rake db : migrate'를 실행 한 후에'내 응용 프로그램을 손상시키지 않았습니다. '는 하나의 마이그레이션 만 실행하지만 스키마는 4 가지 마이그레이션을 모두 보여주기 위해 업데이트 중입니다. 나는 새 데이터베이스를 체크 아웃 할 때마다 데이터베이스가 다른 마이그레이션 상태로 변경되지 않는다는 것을 알고있다. – sscirrus

+0

feature2에서'rake db : migrate'를 실행 한 후에 데이터베이스가 feature2의 마이 그 레이션 버전에 있습니다. – Thomas

+0

맞아 ... 내 질문은이 문제를 가장 효과적으로 처리하는 방법입니다. 개발시 각 기능에 대해 새 데이터베이스를 재구성/재구성하는 것은 매우 부담스러워 보입니다. – sscirrus