Ho la seguente riga nella mia app di Sinatra:
Mongoid.load!("./config/database/mongoid.yml")
Questo è bello, ma non voglio mantenere i dettagli della mia connessione in un file YAML e aggiungerlo a .gitignore
. Voglio tenerli dentro ENV
.
Sono stato in grado di bypassare questo in passato aggiungendo cose come username: <%= ENV["MONGODB_USER"] %>
al file di configurazione YAML, quindi leggerlo come ERB, salvarlo e leggerlo di nuovo con Mongoid.load!
prima che Heroku pulisse il disco. Inutile dire che è piuttosto pazzesco.
Tutto quello che ho trovato è la definizione di .load!
qui e non sembra che ci sia un modo per aggirare questo.
C'è un modo nascosto per configurare a livello di programmazione Mongoid
connessioni?
Grazie in anticipo.
risposte:
3 per risposta № 1Costruire su la risposta di mu:
Puoi dare a Mongoid un hash da utilizzare per l'inizializzazione in questo modo:
Mongoid.load_configuration(clients: {
default: {
database: database,
hosts: [ host ]
}
})
Si noti che l'hash si passa a load_configuration
non è previsto che inizi con una chiave di ambiente come si farebbe normalmente mongoid.yml
.
2 per risposta № 2
Mongoid.load!
non fa molto:
def load!(path, environment = nil)
settings = Environment.load_yaml(path, environment)
if settings.present?
Sessions.disconnect
Sessions.clear
load_configuration(settings)
end
settings
end
Tutto ciò che fa è un po 'di contabilità, carica lo YAML e consegna a load_configuration
fare il sollevamento pesi. Non c'è niente che ti impedisca di costruire il settings
Hash a mano e chiamando Mongoid.load_configuration
te stesso.