데이터베이스 기능 확인
가끔 특정 코드 조각이 특정 데이터베이스 버전에서만 작동할 수 있습니다. 가능한 한 그러한 코드를 피하려고 노력하지만 때로는 데이터베이스(버전)별 동작을 추가해야 할 필요가 있습니다.
이를 위해 다음과 같은 사용할 수 있는 메소드가 있습니다:
-
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?
가드로 감싸져야 합니다. 이를 통해 읽기 전용 데이터베이스에 대해 쓰지 않도록 보장할 수 있습니다.
CRUD의 CUD
작업을 필터링하고 사용자가 데이터베이스를 업데이트하고 500 오류를 가져오지 않도록 하는 Rails Middleware가 있습니다 (Gitlab::Middleware::ReadOnly
).