Wiem, że temat trochę pachnie flamem, więc proszę o powściągliwość - naprawdę ciekaw jestem Waszych opinii i doświadczeń
Ci z Was, którzy obcowali trochę z Javią wiedzą zapewne kim jest pan Fowler i że wpływ jego książek na powstanie Rails jest nie do przecenienia. Jest to jednocześnie osoba bardzo zafascynowana Rubym, Railsami, zastosowaniem Ruby’ego w DSLach, która jednocześnie jest jednym z moim branżowych guru. Trudno firmowane przez niego ThoughWorks oskarżyć o nieufność i niechęć do wykorzystwania Ruby’ego w praktyce - z tym większą ciekawością obejrzałem tą prezentację
http://www.infoq.com/presentations/fowler-ruby
Przyznam szczerze, ze jestem trochę rozczarowany, ale nie zaskoczony, tym co się w niej pojawia. Choć projekty w Rubym ThoughWorks produkuje, nie są to jednak duże aplikacje (dajmy na to powyżej 10 osób pracujących przez wiele miesięcy) - tutaj w dalszym ciagu niepodzielnie króluje Java. Dotyczy to nawet skomplikowanych aplikacji webowych, które nie mają skomplikowanej domeny biznesowej, takich jak strona Gaurdiana, największego internetowego dziennika w Europie.
Moje osobiste doświadczenia trochę jakby zbiegają się z przekazem prezentacji - nie do końca rozumiem, dlaczego błędne miałoby być założenie, że jeśli chodzi o rozmiar zespołu Rails czy Ruby czy wręcz dynamiczne języki słabo się skalują. Składa się na to bowiem nie tylko kwestia braku podpowiedzi w IDE, co wydaje się głupotą, ale bardzo utrudnia pracę w dużym projekcie, ale także takie rzeczy jak brak pełnej enkapsulacji (tutaj pewnie wielu się ze mną nie zgodzi) czy rzeczy nad którymi ostatecznie można zapanować, takie jak nadmierne otwieranie klas.
Jak to u Was wygląda - czy myślicie, że duże aplikacje, z rozległą logiką biznesową, pisane w duchu Domain Driven Design, mogą w ogóle być pisane w Railsach? Albo innymi słowy, czy Rails wspiera takie aplikacje? Jak pisał kiedyś Radarek - można pisać w Javie w Rubym, więc nie chodzi mi o przepisywanie Javy, tylko aktywne pisanie Ruby way.
Kiedyś czytałem, że przecież Rails wspiera DDD, kreując rich domain model (przepraszam, ale nie wiem jak to przetłumaczyć) poniekąd z automatu, gdyż dodajemy całą logikę biznesową do klas modelu. Ale realnie, czy jakakolwiek separacja warstwy aplikacji, przezentacji i logiki biznesowej występuje w Railsach? Przecież w Rails model może nawet sam się zapisać do bazy - czyli inheretnie wie o tym, że jest z bazy danych.
To są tylko luźne myśli - temat stoowalności Railsów czy Ruby’ego w ogóle w dużych projektach - takich jak choćby te 10 osób przez rok - niech będzie aplikacja webowa - jest bardzo rozległy i chciałbym tym postem kogoś zachęcić do dyskusji, skoro wakacje się konczą i czas wracać do realu