首页 > 解决方案 > 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']

我们想要发生的是尝试连接到生产环境,但如果身份验证失败,则回退到环境变量。我的问题是:

  1. 这可以用一个数据库来完成吗(生产是否可以有一个啄食顺序,如果失败试试这个)

  2. yml 文件可以读取环境变量吗?

  3. 如果 1 是不可能的,我们可以在初始化程序中配置应用程序或者说“如果 Rails.env.production?尝试连接到生产,如果你不能尝试连接到 production_2”?

感谢您的帮助,凯文

标签: ruby-on-railsmongoid

解决方案


Mongoid 不支持通过各种配置迭代来找到一个有效的配置。相反,所有 MongoDB 驱动程序都执行后台初始化——它们不需要存在或工作的数据库来构建客户端,并且查询/操作将等待数据库自行配置。

如果您想遍历配置,您可以编写一个脚本来执行此操作并生成一个工作mongoid.yml,然后调用服务器/控制台/等。

有关环境变量,请参阅https://docs.mongodb.com/mongoid/master/tutorials/mongoid-configuration/#erb-preprocessing


推荐阅读