2011-08-11 6 views
1

현재 프로젝트를 시작했을 때 나는 여전히 RoR을 배우고 있었고 프로젝트 조직을 운영하는 경험이 풍부한 사람이있었습니다 (파일이있는 곳, 프로젝트). 그가 주장한 것 중 하나는 테이블에 대한 시드 데이터가 있으면 해당 시드 데이터를 마이그레이션 자체에 넣는 것입니다. 또한 그는 db/seeds.rb가 유닛 또는 AT를 실행할 때 테스트 사이에 테스트 DB를 설정하는 데에만 사용되었다고 주장했습니다 (각각 rspec 및 오이 사용).레일에서 db/seeds.rb를 사용하는 올바른 방법은 무엇입니까?

최근에 나는 우리가 이것을 잘못하고 있음을 암시하는 다양한 대답을 읽었으며, 여기서 누군가가 "Rails Way"가 무엇인지에 대해 더 깊은 설명을 줄 수 있기를 바랍니다.

감사합니다.

편집 :

내가 이해하는 데 필요한 몇 가지 :

가. 이 시드 된 데이터가 테스트를 위해 데이터베이스에 있는지 확인하려면 어떻게해야합니까? 나는 rspec 테스트가 테스트를 트랜잭션에 넣고 결국 트랜잭션을 롤백함으로써 데이터베이스를 정리한다는 말을 들었다. 그렇다면 테스트 데이터베이스가 전체 테스트 실행 전에 시드되기 시작 하는가? 무엇이 시딩을 일으키는가? 내가

B 착각 할 수도 있지만

rake db:test:prepare 

, 데이터베이스 씨앗하지 않는 것 같습니다. 실제로 실행해야합니까? db/seeds.rb에 새로운 시드 데이터를 추가해야하는 마이그레이션이 도입 된 후에

rake db:migrate 
rake db:seed 

을 입력해야합니까?

c. 씨앗을 재실행 할 때 예외가 발생하지 않도록하고 시드 필링의 각 개별 부분을 수표로 묶어야합니다. 예를 들어 씨앗을 재실행 할 때 예외가 발생하지 않도록해야합니다. 예를 들어 시드 시드에 재 시드를 시도 할 때 위반되는 고유성 제약이 있습니다. (이것은 질문으로 이어진다, 그 문항은 심지어 문법적으로 옳은가 ??).

"우리의 남자"가 마이그레이션에서 파종의 길을 걷게 한 원인은 씨앗을 시도하기 전에 이전의 씨앗을 모두 다시 검사하지 않고 전체 마이그레이션 메커니즘에 의지 할 수 있다는 것입니다. ...

난이 명확 희망 ...

답변

2

마이그레이션은 단순한 인구 작업하지 확실히 그것 내의 데이터에 대한 데이터베이스의 구조를 조작하고위한 것입니다.

이것은 단순히 db/seeds.rb에 지정된 데이터를 빨아들이는 레이크 작업입니다.

+1

나는 논리를 따른다. 그러나 나는 이것에 접근하는 방법에 관한 약간의 세부 사항을 이해하려고 노력하고있다. 내 질문에 추가 할 것입니다 ... – jaydel

+1

테스트 또는 준비 데이터 집합에 seeds.rb를 사용하지 마십시오. 앱 실행에 필요한 기본 데이터에만 사용해야합니다. –

+0

마이그레이션시 시드는 매우 약합니다. 모델 유효성 검사 및 ORM 콜백은 마이그레이션 경로를 따라 쉽게 끊어진 참조를 가질 수 있습니다. –

관련 문제