能否使用PGOPTIONS环境变量配置Ruby on Rails的PostgreSQL会话?
客户端配置方案(Ruby on Rails侧)
你可以直接通过设置PGOPTIONS环境变量实现会话级参数配置,变量值格式为-c pg_trgm.word_similarity_threshold=你需要的阈值,示例如下:
- 单次启动Rails时生效:在启动命令前加环境变量即可
PGOPTIONS="-c pg_trgm.word_similarity_threshold=0.5" rails server - 持久生效:将该环境变量加入到Rails项目的.env文件、或者部署环境的全局环境变量配置中,所有Rails建立的PostgreSQL连接都会自动应用该参数。
注意:以上配置生效的前提是对应数据库已经开启了pg_trgm扩展,可通过执行SQL CREATE EXTENSION IF NOT EXISTS pg_trgm; 开启扩展
服务端配置方案(PostgreSQL Docker/GitHub Actions场景)
如果你需要所有连接都默认应用该参数,可以直接在启动PostgreSQL Docker容器时传入对应环境变量,在GitHub Actions的服务配置中参考写法如下:
services: postgres: image: postgres:15 env: POSTGRES_USER: test POSTGRES_PASSWORD: test POSTGRES_DB: test # 全局配置pg_trgm参数,可自行调整阈值 PGOPTIONS: "-c pg_trgm.word_similarity_threshold=0.5" ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
这个配置会让PostgreSQL服务端所有连接默认应用你设置的阈值,不需要客户端单独配置。
内容的提问来源于stack exchange,提问作者Frederik Baetens
相关产品推荐
相关产品推荐

