ruby-on-rails - rails mongoid 2 pass db连接
问题描述
我们有一种情况,我们希望从我们的 Rails 应用程序中为 mongo 连接进行 2 次传递配置,有没有办法结合使用 mongoid.yml 和可能的应用程序初始化程序来做到这一点。我们想要发生的是在我们的 mongoid.yml 中有这个:
production:
clients:
default:
database: data_production
hosts:
- localhost:27017
options:
production_2:
clients:
default:
database: data_production
hosts:
- localhost:27017
options:
user: special
password: ENV['DB_PASSWORD']
我们想要发生的是尝试连接到生产环境,但如果身份验证失败,则回退到环境变量。我的问题是:
这可以用一个数据库来完成吗(生产是否可以有一个啄食顺序,如果失败试试这个)
yml 文件可以读取环境变量吗?
如果 1 是不可能的,我们可以在初始化程序中配置应用程序或者说“如果 Rails.env.production?尝试连接到生产,如果你不能尝试连接到 production_2”?
感谢您的帮助,凯文
解决方案
Mongoid 不支持通过各种配置迭代来找到一个有效的配置。相反,所有 MongoDB 驱动程序都执行后台初始化——它们不需要存在或工作的数据库来构建客户端,并且查询/操作将等待数据库自行配置。
如果您想遍历配置,您可以编写一个脚本来执行此操作并生成一个工作mongoid.yml
,然后调用服务器/控制台/等。
有关环境变量,请参阅https://docs.mongodb.com/mongoid/master/tutorials/mongoid-configuration/#erb-preprocessing。
推荐阅读
- r - 如何使用向量对 R 中的值进行分类?
- javascript - 我想在反应原生博览会中隐藏标题
- javascript - rollbackFailedOptional:动词 npm-session 9a5b1fb467359b45
- reactjs - 如何重定向到 /user/dashboard
- mysql - 使用带有 ifnull 函数 MySQL 的联合语句
- excel - VBA Excel 将文件导出为 .csv,并将数据保存在正确的列中
- c# - OpenhardwareMonitorLib System.IO.FileNotFoundException
- c# - Redis sentinel 中的 C# 操作
- laravel - Laravel 中的临时切换应用程序密钥并将其用于字符串的加密/解密
- c# - 为什么 ASP.NET web api 3 项目在 ASP.NET web api 2 执行时没有请求就无法启动?