Rozbudowa starej strony

Witam serdecznie,

od jakiegoś czasu w mojej pracy w sieci intranet funkcjonuje sobie serwisik do wymiany szybkich notatek pomiędzy pracownikami. Napisałem go w Railsach w sierpniu zeszłego roku. Działa idealnie i jest bardzo prosty (nie miałem wtedy czasu się tym bawić) ale teraz prezes powiedział, że mam to rozbudować. Powiedziałem ok, bo co miałem powiedzieć. Problem polega na tym, że nie bardzo wiem jak się do tego zabrać.

Wcześniej zrobiłem “rails wiadomosci” i się samo zrobiło. Przekopiowałem na serwer i działało. Teraz do wiadomości muszę dopisać rejestrowanie czasu pracy, rejestrowanie zapotrzebowań i kilka innych bzdetów. Skopiowałem więc sobie moje wiadomości na lokalny serwerek, wpisałem “rails zapotrzebowanie” i mi się znów samo zrobiło. Niby wszystko ładnie, ale nie do końca.

W php robiąc nowy moduł do jakiegoś frameworka czy mojego mechanizmu dodawałem po prostu katalog z nazwą modułu i w nim pisałem co trzeba. A tutaj mi się zrobiła jakby nowa strona. Jak to mogę rozwiązać, by wszystkie moje moduły tworzyły jedną całość, korzystały z jednej bazy i konfiga?

Zastanawiałem się też nad moją przyszłą stroną domową, tutaj będzie ten sam problem. Zrobię sobie najpierw “rails news” do wyświetlania newsów, ale co gdy będę chciał dodać galerię zdjęć, artykuły, recenzje i jakieś inne moje pomysły. A co jak będe już chciał do strony podpiąć sklep? Nie potrafię sobie tego wyobrazić. W PHP utworzyłbym w katalogu modules katalog sklep i w nim zamieścił wszystkie akcje związane ze sklepem (od koszyka po administrację towarami) a w RoR jak to rozwiązać?

Przyznaję szczerze, że nawet nie wiem za bardzo czego szukać by się doszkolić. Nie wiem jak poprawnie nazywa się to o czym piszę. Chodzi mi głównie o to, bym każdy element nowej aplikacji miał w osobnych katalogach np:

Aplikacja firmowa:
/app/controllers
---- wiadomosci
---- zapotrzebowanie
---- czas_pracy

/app/helpers/wiadomosci
---- pliki helperow wiadomosci
/app/helpers/zapotrzebowanie
---- pliki helperow zapotrzebowania
/app/helpers/czas_pracy
---- pliki helperow czasu_pracy

/app/models/wiadomosci
---- pliki modeli wiadomosci
/app/models/zapotrzebowanie
---- pliki modeli zapotrzebowania
/app/models/czas_pracy
---- pliki modeli czasu_pracy

i tak dalej z widokami i wszystkim innym co tam będzie potrzebne.

Z góry bardzo dziękuję za wszelką pomoc lub nakierowanie na miejsce lub hasło pod jakim szukac odpowiedzi.

Przede wszystkim zapomnij o PHP (pomijam frameworki), tutaj jest troszkę inne podejście. “rails cos” nie służy do tworzenia jednej podstrony, skryptu czy też modułu. W ten sposób tworzysz całą aplikację. W każdej takiej aplikacji łącznikiem pomiędzy użytkownikiem (przeglądarką) a Twoją aplikacją są kontrolery. Zatem gdy chcesz dodać nowy moduł czy też funkcjonalność do tej samej aplikacji to nie tworzysz nowej aplikacji (rails news) ale tworzysz nowe kontrolery. Grupowanie kontrolerów jest możliwe i jak najbardziej ma sens, ale raczej nie w Twoim wypadku. Najczęściej dzieli się na moduły typu panel admina, panel klienta, frontend, backend etc. Ty chcesz po prostu dodać nową funkcjonalność (prawd. po prostu 1 kontroler) więc po co Ci podział na katalogi? Póki kontrolerów nie masz +/- 20 to nie powinno być to aż źle. Jeśli tak bardzo chcesz to poszukaj na forum, ten problem był już opisywany kilkakrotnie. Co do podziałów modeli - moim zdaniem ich podział ma jeszcze mniejszy sens. Przecież modele zawierają Twoją logikę biznesową i chyba nie powiesz mi, że wiesz w jakiej części aplikacji użyjesz danego modelu? Helpery i widoki są skojarzone bezpośrednio z kontrolerem i są tak samo zagnieżdżone.

A co do nazwania “tego czegoś”. google: “rails nested controllers”, “rails nested models”, “rails controller subdirectories” etc.

Jeśli dobrze zrozumiałem to nie robię “rails news” tylko “rails firma” i w tym dodaję tylko kontrolery moich nowych funkcjonalności. Dobrze, czyli widzę podobieństwa i rozumiem.

Po co mi podział na katalogi? Bo w PHP tak robiłem. Gdy zmieniałem coś w newsach wchodziłem do kataogu news i miałem wszystko w jednym miejscu (znaczy się pliki php, bo szablony były gdzie indziej). Ale widzę, że tutaj też jest ciekawie. Wszystkie akcje związane z danym kontrolerem w jednym pliku, modele w drugim a widoki mają już swój katalog. Czyli wszystko ładnie poukładane. Zabieram się więc do testów, prób i zabaw.

Dziękuję pięknie za wyjaśnienie tego zagadnienia.

P.S. ciekawy blog

Jeśli ja dobrze zrozumiałem to Ty zrozumiałeś nie za dobrze ^^. Chodzi o to żeby wygenerować jeden nowy kontroler:
jak masz już aplikacje news, to wejdz do niej z konsoli( cd news )i tam odpal:
ruby script\generate controller firma …

PS: jeśli faktycznie o to chodziło ( jeśli nie to sorry za offtop :slight_smile: ) to poczytaj sobie mimo wszystko jakieś podstawy jeszcze…powodzenia, pozdro

To Ci pomoze

no nie do końca tak Athril. Z tego co ja zrozumiałem to stworze sobie nową aplikację Firma, w niej dodam kontrolery wiadomosci, zapotrzebowanie, czas_pracy. Do wiadomości przeklję kod ze starej aplikacji a resztę dopiszę. Tak ja to zrozumiałem. Tak czy siak, jutro poniedziałek i będą testy. Zastanawiam się też, czy wcześniej nie postawić sobie serwera SVN :slight_smile: A nóż sie przyda. W PHP nie był potrzebny, ale tutaj… kto wie.

A co za różnica czy pehap, czy ruby/railsy, czy cokolwiek innego? :slight_smile: SVNa, tudzież inny system kontroli wersji, powinno się używać przy każdym projekcie. Zawsze możesz wrócić do któregoś momentu, wycofać zmiany, w razie czego ktoś może łatwiej pomóc Ci coś dopisać. Przy okazji masz gdzieś kopię całego kodu.

Drogus ja się z tobą całkowicie zgadzam. Tylko, że do tej pory się po prostu nie sprawdzał, był nie potrzebny. Teraz mam zamiar to zmienić i trochę namieszać wśród zwyczajów panujacych w firmie. SVN, otwarty kod - dla mnie to przyszłość. Wystarczy przekonać szefa :slight_smile: Do użytkowania Linuxa już go przekonałem pokazując mu możliwości sieciowe i Compiza. Ale to już poza tematem. Jutro, albo jeszcze dziś się odezwę co udało mi się zwojować.

Skoro jeszcze nic nie wprowadziłeś sprawdź GIT:

http://blog.zabiello.com/articles/2008/03/19/distributed-vcs
http://blog.drogomir.com/articles/2008/04/08/git

Dla mnie bomba :wink:

Ja również uważam, że korzystanie z Subversion czy Git jest wskazane. Lokalnie Git się pewnie sprawdzi znakomicie, a za wsze można posiłkować się Githubem.

Dzięki wielkie, Panowie GIT jest świetny. O wiele lepszy od SVN choć brakuje mi do niego jakiegoś graficznego narzędzia. Wcześniej robotę z SVN odwalał za mnie Zend Studio i KSVN ale czy jest coś do GIT podobnego?