Development Tip

Rails : schema.rb의 기능은 무엇입니까?

yourdevel 2020. 11. 11. 20:45
반응형

Rails : schema.rb의 기능은 무엇입니까?


내가 생각하는 데 사용 db/schema.rbA의 Rails그 때문에, 데이터베이스 스키마를 저장 프로젝트 ActiveRecord가 무슨 테이블 / 열을 알 수 있습니다.

그러나 이전에 나는 놀랍게도 내가 삭제 한 후에 내 프로젝트가 정상적으로 실행된다는 것을 알았습니다 db/schema.rb!

그렇다면 Rails캔 없이도 작동하기 때문에 schema.rb실제로 무엇을합니까?


schema.rb주로 두 가지 목적 :

  1. 데이터베이스 스키마의 최종 현재 상태를 문서화합니다. 특히 마이그레이션이 두 번 이상인 경우 마이그레이션만으로 스키마를 추론하기가 어렵습니다. 선물 schema.rb만 있으면 그곳을 둘러 볼 수 있습니다. ActiveRecord 자체는 실제로 사용하지 않습니다. 사용자가 schema.rb최신 상태를 유지할 것으로 예상하는 것보다 훨씬 안전하므로 런타임 중에 데이터베이스를 검사합니다 . 그러나 개발자의 혼동을 피하려면 항상 마이그레이션과 함께 최신 파일을 유지해야합니다.

  2. 테스트에서 데이터베이스 스키마를 채우는 데 사용됩니다. 따라서 a rake db:schema:dump는 종종 레이크 test:prepare런의 일부로 실행됩니다. 목적은 테스트 데이터베이스의 스키마가 현재 개발 데이터베이스와 정확히 일치하는 것입니다.


Rails 문서 / 6.1 스키마 파일이란 무엇입니까?

강력한 마이그레이션은 데이터베이스 스키마에 대한 신뢰할 수있는 소스가 아닙니다. 이 역할은 db / schema.rb 또는 Active Record가 데이터베이스를 검사하여 생성하는 SQL 파일에 속합니다. 편집하도록 설계된 것이 아니라 데이터베이스의 현재 상태를 나타냅니다.

전체 마이그레이션 기록을 재생하여 앱의 새 인스턴스를 배포 할 필요가 없으며 오류가 발생하기 쉽습니다. 현재 스키마에 대한 설명을 데이터베이스에로드하는 것이 훨씬 간단하고 빠릅니다.

예를 들어, 테스트 데이터베이스가 생성되는 방법은 다음과 같습니다. 현재 개발 데이터베이스를 덤프 (db / schema.rb 또는 db / structure.sql) 한 다음 테스트 데이터베이스에로드합니다.

스키마 파일은 Active Record 개체의 특성을 빠르게 확인하려는 경우에도 유용합니다. 이 정보는 모델의 코드에 없으며 여러 마이그레이션에 걸쳐 자주 분산되지만 정보는 스키마 파일에 잘 요약되어 있습니다. annotate_models gem은 해당 기능을 원할 경우 스키마를 요약하는 각 모델의 상단에 주석을 자동으로 추가하고 업데이트합니다.

Rails 문서에서 다룰 수 있습니다.

참고 URL : https://stackoverflow.com/questions/9884429/rails-what-does-schema-rb-do

반응형