문제

이니셜 라이저에서 실행되는 코드가 있으며 잘 작동합니다. (YAML 파일에서 데이터베이스에 기본 설정을 저장합니다. Rails-settings-cache 보석.)

그러나 Travis CI에서 이것을 실행할 때, 처음부터 마이그레이션을 수행하기 때문에 테이블이 아직 존재하지 않기 때문에 이니셜 라이저가 실패합니다.

코드를 실행하는 방법이 있습니까? ~ 후에 마이그레이션이지만 응용 프로그램이 시작되기 전에?

도움이 되었습니까?

해결책

따라서이 작업을 좋아하지는 않지만 DB : Migrate에서 이니셜 라이저가 실행되는 것을 방해하는 쉬운 방법이지만 응용 프로그램 시작 또는 테스트 실행에서 실행하는 것은 테이블이 존재하는 경우 조항 테스트로 래핑하는 것입니다. 따라서 기존 이니셜 라이저 코드를 가져 와서 래핑하면

if ActiveRecord::Base.connection.table_exists? 'table_name'
   ....
end

'Table_Name'이 누락 된 테이블의 이름 인 경우, Rake DB : Migrate 및 Spec Run은 성공적으로 완료 할 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top