V aplikácii Sinatra mám nasledujúci riadok:
Mongoid.load!("./config/database/mongoid.yml")
Je to pekné, ale nechcem si uchovávať podrobnosti o pripojení v súbore YAML a pridať ich do súboru .gitignore
, Chcem ich držať ENV
.
V minulosti sa mi to podarilo obísť pridaním podobných vecí username: <%= ENV["MONGODB_USER"] %>
do konfiguračného súboru YAML, potom ho prečítať ako ERB, uložiť a znova prečítať pomocou Mongoid.load!
predtým, ako Heroku utrel disk. Netreba dodávať, že je to dosť orechové.
Všetko, čo som našiel, je definícia .load!
priamo tu a nevyzerá to tak, že by to nejako bolo.
Existuje nejaký skrytý spôsob programovej konfigurácie Mongoid
spoje?
Vopred ďakujem.
odpovede:
3 pre odpoveď č. 1Stavať na jeho odpoveď:
Môžete dať Mongoid hash na inicializáciu, ako je tento:
Mongoid.load_configuration(clients: {
default: {
database: database,
hosts: [ host ]
}
})
Všimnite si, že hash odovzdáte load_configuration
Neočakáva sa, že začne s kľúčom prostredia, aký by ste normálne mali mongoid.yml
.
2 pre odpoveď č. 2
Mongoid.load!
nerobí moc:
def load!(path, environment = nil)
settings = Environment.load_yaml(path, environment)
if settings.present?
Sessions.disconnect
Sessions.clear
load_configuration(settings)
end
settings
end
Všetko, čo robí, je trochu účtovníctvo, načíta YAML a ruky load_configuration
robiť ťažké zdvíhanie. Nič vás nebráni v budovaní systému Windows 7 settings
Hash ručne a volanie Mongoid.load_configuration
sami.