В приложението ми Синатра имам следния ред:
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
себе си.