InfoGrab Docs

일괄 백그라운드 마이그레이션 스펙 헬퍼

일괄 백그라운드 마이그레이션 스펙 헬퍼에 대해 설명합니다.

일괄 백그라운드 마이그레이션을 위한 버전 관리된 스펙 헬퍼 라이브러리는 마이그레이션 스펙의 반복 코드를 줄여줍니다. 스펙 헬퍼 기능 # 일괄 백그라운드 마이그레이션 스펙에서는 종종 MigrationsHelpers 의 table() 메서드를 사용하여 여러 테이블 헬퍼를 정의해야 합니다. 이로 인해 반복적인 코드가 발생합니다: # 헬퍼 없음 - 반복적 RSpec .describe Gitlab : :BackgroundMigration : :BackfillProjectId do let!( :projects ) { table( :projects ) } let!( :issues ) { table( :issues ) } let!( :notes ) { table( :notes ) } let!( :users ) { table( :users ) } # ... 더 많은 테이블 정의 end 일괄 백그라운드 마이그레이션 스펙 헬퍼는 지연 평가와 메모이제이션을 통해 이러한 반복을 제거합니다: # 헬퍼 사용 - 간결하고 깔끔 RSpec .describe Gitlab : :BackgroundMigration : :BackfillProjectId do include Gitlab::BackgroundMigration::SpecHelpers::V1 # 필요한 테이블 선언 tables :projects , :issues , :notes , :users end 버전 관리 # 헬퍼는 하위 호환성을 보장하기 위해 버전 관리됩니다. 수정이 필요한 경우, 기존 스펙을 깨뜨리지 않고 새 버전을 만들 수 있습니다. 사용 가능한 버전 # V1 : 테이블 헬퍼가 있는 초기 버전 (현재) 특정 버전 사용 # 사용하려는 버전 모듈을 포함합니다: RSpec .describe Gitlab : :BackgroundMigration : :SomeMigration do include Gitlab::BackgroundMigration::SpecHelpers::V1 end 기능 # 명시적 테이블 선언 # 테이블에 접근하기 전에 tables 메서드를 사용하여 명시적으로 선언해야 합니다: RSpec .describe Gitlab : :BackgroundMigration : :BackfillNamespaceId do include Gitlab::BackgroundMigration::SpecHelpers::V1 # 스펙에 필요한 모든 테이블 선언 tables :issues , :namespaces , :projects it 'backfills namespace_id' do # 선언 후 처음 접근 시 테이블이 생성됩니다 namespace = namespaces.create!( name: 'test' , path: 'test' ) project = projects.create!( namespace_id: namespace.id) issue = issues.create!( project_id: project.id) end end 메모이제이션 # 테이블 헬퍼는 메모이제이션되므로, 반복 접근 시 동일한 인스턴스를 반환합