假设我有以下场景,如何将 Rails 4.1 secrets.yml 文件中的配置传递给 mongoid.yml:
配置/secrets.yml 文件
default: &mongodb
mongodb_host: <%= ENV['TRG_MONGODB_HOST'] %>
mongodb_host_port: <%= ENV['TRG_MONGODB_HOST_PORT'] %>
mongodb_database: <%= ENV['TRG_MONGODB_DATABASE'] %>
mongodb_db_username: <%= ENV['TRG_MONGODB_DB_USER'] %>
mongodb_db_passowrd: <%= ENV['TRG_MONGODB_DB_PASSWORD'] %>
development:
secret_key_base: xxxxxxxxyyyy
<<: *mongodb
缩短 config/mongoid.yml 文件
development:
# Configure available database sessions. (required)
sessions:
default:
uri: mongodb://username:password@champ.mongohq.com:17856/ffff
# uri: mongodb://Rails.application.secrets.mongodb_db_username:Rails.application.secrets.mongodb_db_password@Rails.application.secrets.mongodb_host:Rails.application.secrets.mongodb_host_port/Rails.application.secrets.mongodb_database
# uri: mongodb://ENV['mongodb_db_username']:ENV['mongodb_db_password']@ENV['mongodb_host']:ENV['mongodb_host_port']/ENV['mongodb_database']
mongoid.yml 工作的唯一方法是当我使用uri: mongodb://username:password@champ.mongohq.com:17856/ffff直接添加数据库设置时。如果我使用uri: mongodb//Rails.application.secrets.xx设置不会被拾取。此外,当我使用uri: mongodb://ENV['mongodb_db_username']时,设置不会被选中。
我还尝试使用嵌入式 ruby 将环境变量直接传递给 mongoid.yml,例如uri:mongodb://<%= ENV['TRG_MONGODB_DB_USER'] %>但它也没有用。
关于如何制作 Rails4.1 secrets.yml 文件以将设置传递给 mongoid.yml 文件的任何建议。