일괄 백그라운드 마이그레이션 스펙 헬퍼
일괄 백그라운드 마이그레이션 스펙 헬퍼에 대해 설명합니다.
일괄 백그라운드 마이그레이션을 위한 버전 관리된 스펙 헬퍼 라이브러리는 마이그레이션 스펙의 반복 코드를 줄여줍니다. 스펙 헬퍼 기능 # 일괄 백그라운드 마이그레이션 스펙에서는 종종 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 메모이제이션 # 테이블 헬퍼는 메모이제이션되므로, 반복 접근 시 동일한 인스턴스를 반환합
