데이터베이스 기능 확인
가끔 특정 코드 부분은 특정 데이터베이스 버전에서만 작동할 수 있습니다. 최대한 그런 코드를 피하려 노력하지만 때로는 데이터베이스(버전)별 동작을 추가해야 하는 경우가 있습니다.
이를 용이하게 하기 위해 다음과 같은 사용할 수 있는 메서드가 있습니다:
-
ApplicationRecord.database.version
:X.Y.Z
형식의 문자열로 PostgreSQL 버전 번호를 반환합니다.
이를 통해 다음과 같은 코드를 작성할 수 있습니다:
if ApplicationRecord.database.version.to_f >= 11.7
run_really_fast_query
else
run_fast_query
end
읽기 전용 데이터베이스
데이터베이스는 읽기 전용 모드로 사용할 수 있습니다. 이 경우 GET 요청이 데이터베이스에 쓰기 작업을 시도하지 않도록 확인해야 합니다. 해당 요청 중 하나라도 데이터베이스에 쓰기를 하려면 Gitlab::Database.read_only?
또는 Gitlab::Database.read_write?
가드로 감싸야 하며, 읽기 전용 데이터베이스에 대한 쓰기 작업을 막을 수 있습니다.
잠재적으로 쓰기 작업을 필터링하는 Rails 미들웨어가 있으며(생성, 갱신, 삭제 (CUD) 작업) 사용자가 데이터베이스를 업데이트하려는 시도를 막고 500 에러를 발생시키도록 합니다(Gitlab::Middleware::ReadOnly
참조).