Automatyczne ładowanie plików lib w Railsach 4
Używam poniższej linii w inicjatorze do automatycznego ładowania kodu w moim/lib
katalog podczas tworzenia:
config / initializers / custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
(zRails 3 Quicktip: Automatyczne przeładowanie folderów lib w trybie programowania)
Działa świetnie, ale jest zbyt nieefektywny w użyciu w produkcji - zamiast ładować biblioteki przy każdym żądaniu, chcę je tylko załadować podczas uruchamiania. Ten sam blog mainny artykuł opisując, jak to zrobić:
config / application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
Jednak, kiedy przełączam się na to, nawet w fazie rozwoju, otrzymuję NoMethodErrors podczas próby użycia funkcji lib.
Przykład jednego z moich plików lib:
lib / extensions.rb:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
PowołanieTime.milli_stamp
rzuci NoMethodError
Zdaję sobie sprawę, że inni odpowiedzieli na podobne pytania dotyczące SO, ale wszystkie wydają się zajmować konwencjami nazewnictwa i innymi problemami, o które nie musiałem się martwić, zanim… Moje klasy lib już sąpracował w przypadku ładowania na żądanie chcę po prostu zmienić go na per-uruchomienie Ładuję. Jak to zrobić?