/ / Inicializácia Mongoidu bez .load () - rubín, mongodb, heroku, orm, mongoid

Inicializácia Mongoidu bez .load () - rubín, mongodb, heroku, orm, mongoid

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ď č. 1

Stavať 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.