У моєму додатку «Сінатра» є наступний рядок:
Mongoid.load!("./config/database/mongoid.yml")
Це добре, але я не хочу зберігати свої дані про з'єднання у файлі YAML і додавати його до .gitignore
. Я хочу їх тримати ENV
.
Мені вдалося обійти це в минулому, додавши подібні речі username: <%= ENV["MONGODB_USER"] %>
до конфігураційного файлу YAML, а потім прочитати його як ERB, зберегти його та знову прочитати за допомогою Mongoid.load!
перед тим, як Героку витер диск. Потрібно говорити, що це досить горіхово.
Все, що я міг знайти, - це визначення .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
самі