2012-05-18 7 views
5

Szyny 3.2.3. Mam aplikację Railsową z /lib w ścieżkach automatycznego ładowania. Jeden z moich plików bibliotecznych jest wymagająca kilka plików tak jakWymuszenie przeładowania plików biblioteki wymaganych przez automatycznie załadowany plik biblioteki

Dir[Rails.root.join("lib/foo/*.rb")].each { |f| require f } 

w rozwoju, te pliki nie przeładować gdybym je zmienić. Na przykład, jeśli zmienię /lib/foo/bar.rb, będę musiał ponownie uruchomić serwer, aby zobaczyć te zmiany. Czy każdy może zaproponować sposób, aby na każde żądanie zostały ponownie załadowane prawidłowo?

Odpowiedz

3

Jeśli masz te pliki w ścieżce autoload:

config.autoload_paths += %W(#{config.root}/lib) 

wówczas nie ma potrzeby, aby wymagać od nich. Czy próbowałeś już z this?

+1

masz paren spływu! – Excalibur

3

require nie gra bardzo ładnie z systemem automatycznego ładowania szyn.

require_dependency zrobi to, co trzeba, ale utrzymuje system automatycznego ładowania w pętli, aby załadowane stałe zostały rozładowane na końcu żądania. Być może trzeba będzie upewnić się, że pliki znajdują się na ścieżkach automatycznego ładowania w szynach:

+0

Po usunięciu przeładunku 'require' nastąpiło automatyczne ponowne załadowanie pliku modułu. Dzięki @Frederick Cheung –

0

Musisz dodać lub odrzucić komentarz do wiersza.

config.autoload_paths + =% W (# {config.root}/lib)

do klasy Application w config/environment.rb

Powiązane problemy