/ / Najlepsze miejsce do zainicjowania Mongoida w rubinowym klejnocie - ruby, mongodb, rubygems, mongoid

Najlepsze miejsce do zainicjowania Mongoida w rubinowym klejnocie - rubin, mongodb, rubygems, mongoid

Buduję rubinowy klejnot, który będzie wymagałkomunikacja z MongoDB. Używam Mongoid jako mojego sterownika klienta i jestem ciekawy, jaka jest najlepsza praktyka, jeśli chodzi o inicjowanie w kontekście rubinowego klejnotu. Muszę uruchomić gdzieś odpowiednie:

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

Pytanie brzmi: gdzie najlepiej jest to zrobić w rubinowym klejnocie, aby upewnić się, że moje połączenie MongoDB jest dostępne w całym kodzie?

Odpowiedzi:

0 dla odpowiedzi № 1

Moim zdaniem najlepszą praktyką jest to, że wcale tego nie robisz.

Co się stanie, jeśli konsumenci twojego rubygem sąjuż korzystasz z Mongoid w innych aplikacjach? Nie ma dla ciebie sensu (z poziomu zależności, której używają rubygem) zainicjowanie dodatkowej sesji klienta / sesji mongoid, kiedy można użyć już istniejącej.

Pozwolę użytkownikom zarządzać własnym połączeniem i zbudować bibliotekę, aby wiedziała, jak się skonfigurować, pod warunkiem, że dostarczy działające połączenie z bazą danych.

Na przykład możesz zrobić coś takiego:

# 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)

W takich przypadkach najlepiej unikać zakładania, w jaki sposób chcą inicjować zależności zewnętrzne lub wymuszać na nich jakiekolwiek decyzje.


0 dla odpowiedzi nr 2

Po prostu udokumentowałbym informacje o konfiguracji w twoim Gem / Repository i dodałbym Mongoid do twojego .gemspec jako zależność.

Klejnoty nie powinny być uciążliwe, a konfiguracja powinna być oczywista, łatwa do zarządzania i dobrze udokumentowana.