2010-10-06 9 views
5

Mam metodę rozszerzenia tablicy, którą chcę użyć w moim projekcie Rails 3. Gdzie powinien żyć?Najlepsza praktyka dodawania metod rozszerzenia Ruby do Rails 3?

Mam app/classes, gdzie pierwotnie umieścić (array_extensions.rb), aw moim config/application.rb załaduję ścieżkę: config.autoload_paths += %W(#{Rails.root}/app/classes). Jednak, gdy spadnę do rails console, rozszerzenie nie zostanie załadowane.

Czy jest wcześniej zdefiniowane miejsce powinienem umieścić moje metody rozszerzenia dla Rails 3? Lub wstępnie zdefiniowany sposób ich dodania? Wiem, że Rails ma własne metody rozszerzenia dla Array. Czy powinienem dodać moje do active_support/core_ext/array/conversions.rb?

Jaka jest najlepsza praktyka w Rails 3?

Odpowiedz

11

Lepszym sposobem jest utworzenie rozszerzenia w katalogu lib/core_ext, aby łatwo zrozumieć, gdzie znajduje się plik core_ext.

Po utworzeniu inicjalizatora wymagającego tego pliku.

+0

Tak, zapomniałem wspomnieć, że próbowałem przenieść to do biblioteki, ale nie rozważałem oddzielnego folderu dla rozszerzeń. Domyślam się, że moim głównym problemem było założenie, że Rails automatycznie załaduje rozszerzenie klasy. Zamiast tego wciąż musiałem dodać klauzulę wymaga. –

-1

Wszystkie pliki .rb w config/initializers są wymagane do środowiska podczas uruchamiania; powinieneś tam umieszczać rozszerzenia.

+2

Ale to nie znaczy, że powinieneś umieścić tam jakiś skomplikowany kod. To tylko do konfiguracji lub wymagających plików zewnętrznych. –

Powiązane problemy