/ / Ініціалізація Mongoid без .load () - ruby, mongodb, heroku, orm, mongoid

Ініціалізація Mongoid без .load () - ruby, mongodb, heroku, orm, mongoid

У моєму додатку «Сінатра» є наступний рядок:

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 самі