Implementacja REST w railsach od strony generowania metod zwracających ścieżki do różnych akcji i resource’ów to jeden wielki epic fail.
Mając aplikację z dość dużą liczbą resource’ów (40-50) generuje się ok 600-700 helperów do urli (7 dla każdego resource’a + 2 wersje: path i url). Aplikacja z tak dużym plikiem routes.rb zajmuje 20-30 mega więcej pamięci i odpala się potwornie wolno (kilka sekund na dość szybkim serwerze). W trybie development już właściwie nie da się pracować - za każdym requestem routesy się generują od początku.
Częściowym rozwiązaniem są opcje :only i :except dla map.resources, dzięki którym można ograniczyć liczbę wygenerowanych metod. Daje to lekką poprawę, ale na dłuższą metę jest niewygodne, a liczba generowanych metod dalej jest ogromna.
Dobrze jest to rozwiązane w merbie, zamiast tysiąca metod w stylu:
new_user_comment_path(@user, @comment)
jest jesdna:
resource(@user, @comment, :new)
Najchętniej wymieniłbym router railsowy na ten z merba, ale na to trzeba będzie jeszcze trochę poczekać, więc zostaje przepisanie części, która generuje helpery, na ową jedną metodę.
Istnieje jakiś plugin, który udostępnia taki feature?
Bardziej mi chodziło o zastąpienie samej metody generującej w obecnym routerze, ale jeżeli Krauter sobie poradzi z wszystkim czego potrzebuję, w routes.rb, to czemu nie?
Jak będę miał trochę więcej czasu to na pewno sprawdzę, wielkie dzięki za linka
Co do ramu, to dziwne strasznie, jak wyrzuciłem zawartość routesów railsowych to jedna instancja zajmowałą ok. 20-25mb mniej (aczkolwiek jest tam bardzo dużo resource’ów). Dużo miałeś resource’ów w routes.rb?