/ / Най-доброто място за инициализиране на Монгоид в скъпоценна скъпоценност - рубин, монгоб, рубигем, монгоид

Най-доброто място за инициализиране на Mongoid в рубинен скъпоценен камък - рубин, монгод, рубигем, монгоид

Изграждам скъпоценен скъпоценен камък, който ще изисквакомуникация с MongoDB. Аз използвам Mongoid като моят клиент драйвер и съм любопитен каква е най-добрата практика, доколкото се инициализира в контекста на рубинен скъпоценен камък. Трябва да изпълня следното някъде подходящо:

Mongoid.load!("path/to/your/mongoid.yml", :production)

Въпросът е къде е най-доброто място да направя това в скъпоценна скъпоценна камък, за да гарантирам, че моята MongoDB връзка е достъпна в целия ми код?

Отговори:

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

Според мен най-добрата практика е изобщо да не го правиш.

Какво се случва, ако са потребители на вашата рубигемвече използвате Mongoid другаде в приложението си? Няма да има смисъл за вас (от зависимостта от рубигем, която те използват) да инициализирате допълнителна клиентска сесия / монгоидна сесия, когато бихте могли да използвате съществуваща.

Бих позволил на вашите потребители да управляват собствената си връзка и да изграждат вашата библиотека, така че тя да знае как да се настрои, при условие че е предала функционираща връзка с база данни.

Например можете да направите нещо подобно:

# for rails apps, in config/initializers
YourGem.configure do |config|
config.client = mongoid_client_instance
end

# for use outside rails
my_instance = YourGem.new(mongoid_client_instance)

В такива случаи е най-добре да избягвате да правите предположения как искат да инициализират външни зависимости или да принуждават каквито и да било решения по тях.


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

Просто бих документирал информацията за настройката във вашия Gem / Repository и ще добавя Mongoid към вашия .gemspec като зависимост.

Скъпоценните камъни не трябва да бъдат натрапчиви, а конфигурацията трябва да бъде очевидна, управляема и добре документирана.