Help us learn about your current experience with the documentation. Take the survey.
验证数据库功能
有时某些代码可能只在特定数据库版本上运行。虽然我们尽量避免这种情况,但有时有必要添加数据库(版本)特定的行为。
为此,我们提供了以下方法供您使用:
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 中间件,它会过滤任何潜在的写操作(CRUD 中的 CUD 操作),并防止用户尝试更新数据库而收到 500 错误(参见 Gitlab::Middleware::ReadOnly)。