/ / Инициализиране на Mongoid без .load () - рубин, mongodb, heroku, orm, mongoid

Инициализиране на Mongoid без .load () - руби, mongodb, heroku, orm, mongoid

В приложението ми Синатра имам следния ред:

Mongoid.load!("./config/database/mongoid.yml")

Това е хубаво, но не искам да съхранявам данните си за връзка в YAML файл и да го добавям .gitignore, Искам да ги запазя ENV.

Успях да заобиколя това в миналото, като добавих неща като username: <%= ENV["MONGODB_USER"] %> в конфигурационния файл на YAML, след това го прочетете като ERB, записвайки го и го прочетете отново Mongoid.load! преди Heroku да изтрие диска. Излишно е да казвам, че е доста вкусен.

Всичко, което можех да намеря, е определението за .load! тук и не изглежда да има някакъв начин около това.

Има ли някакъв скрит начин за програмно конфигуриране Mongoid връзки?

Благодаря предварително.

Отговори:

3 за отговор № 1

Изграждане на му отговор:

Можете да дадете на Mongoid хеш, който да използвате за инициализация по този начин:

Mongoid.load_configuration(clients: {
default: {
database: database,
hosts: [ host ]
}
})

Обърнете внимание, че хешът преминавате load_configuration не се очаква да започне с ключ на околната среда, какъвто обикновено бихте имали mongoid.yml.


2 за отговор № 2

Mongoid.load! не върши много:

def load!(path, environment = nil)
settings = Environment.load_yaml(path, environment)
if settings.present?
Sessions.disconnect
Sessions.clear
load_configuration(settings)
end
settings
end

Всичко, което прави, е малко счетоводство, зарежда YAML, и ръцете на load_configuration за тежко повдигане. Няма нищо, което да ви попречи да построите settings Хеш на ръка и викане Mongoid.load_configuration себе си.