[quote=PaK]Merb nie mial tylu pluginow, helperow i bibliotek co Rails w momencie podejmowania decyzji. Rails natomaist mialo marke, kupe materialow, duza blogosfere, webcasty, pluginy, dzialajace produkcyjne aplikacje (ile tego bylo w tym merbie?), renome, gigantyczne community skupione wokol jednego konkretnego frameworka. Przedewszysktim juz od wersji 0.13 wdrozenia, wdrozenia i jeszcze raz wdrozenia.
Juz ci to kilka razy tlumacyzlem poltora roku temu… doprowadzenie merb’a do punktu w ktorym bylo rails to jeszcze conajmnije 3-4 lata (nie tylko w sensie stricte kodu ale calego srodowiska, wszystkich tych rzeczy ktorych nie zmienic wydajnoscia ani liniami kodu), doprowadzenie rails do punktu w ktorym byl merb, to tylko refaktoryzacja… zajelo widac ponad rok.
Ezra z DHH dobrze wiedzieli o tym ze na koncu osiagna ten sam framework w taki czy inny sposob, ale kosztem tego ze beda 2 frameworki woleli widac miec jeden, sprawny, skonsolidowany i wokol tego jednego budowac biznes. Ezra rozwija ta swoja firme hostingowa, a DHH pisze ksiazki
sam zobacz ze oni juz nie sa zainteresowani budowaniem swojego programistycznego ego… ida dalej[/quote]
Chyba się nie rozumiemy. Dwa frameworki Rails2 i Merb1 miały się scalić we wspólnym, jednym frameworku po nazwą Rails 3.0, prawda? Z tego logicznie wynika, że Rails 3.0 = Merb 2.0 i to Yehuda Katz wyraźnie stwierdził: “Effectively, Merb 2 is Rails 3”.
Na tym tle to, coś napisał jest bez sensu. Bo od strony kodu, do Rails 3 można było dojść zarówno poprzez bazowy kod Rails 2, jak i bazowy kod Merba 1. Zasadniczo nie ma różnicy. Ale tu jest jeden problem. Wiadomo, że Merb 1 miał dużo lepszą (i bliższą planowanego Rails 3) implementację niż Rails 2. Modularność? W Merbie1 jest dużo lepsza niże w Rails2. Router? Też lepszy. Agnostyczny ORM? Od początku Merb planowano aby był agnostyczny. Optymalizacja wydajnościowa? Od samego początku Merb był pisany z nastawieniem na wysoką wydajność. Itd. Skoro więc Merb 1 i Rails 2 miały i tak stać się wspólnym Rails 3 to czyż nie logiczniej było aby to zrobić na bazie kodu Merba 1? Kupę rzeczy by już było. Można by tylko się skupić na ulepszeniach, jakie miał wprowadzać Rails 3. Zamiast rozgrzebywać kod Rails2 można było ulepszyć Merba1 i nazwać to Railsem 3. Przecież o to tu chodzi: o połączenie się tych dwóch na wyższym poziomie. Jeden i drugi framework musiał być przebudowany, tylko że Rails2 wymagał wielokrotnie więcej pracy. Pytam się więc: po jaką cholerę refactorowano RoR2 aby w ogóle dojść do poziomu Merba1? Przecież celem jest Rails 3 (aka Merb 2).
W tym wszystkim interesuje mnie czy Rails 3.0 będzie miał kilka rzeczy które widzę tylko w Merbie.
Np. parametry formalne w metodach kontrolerów a nie wszystko przez hasza params. Albo Parts czy jakiś odpowiednik komponentów. Wkurza mnie że nie ma jasnego planu tego co ma wylecieć, a co zostać z RoR2 i Merba1…
Albo czy Rails 3 pozbędzie się głupiego (odziedziczonego po Rails 2) wyjątku DoubleRenderException? W Merbie ten problem nie istnieje, bo po prostu metoda kontrolera zwraca ostatnie wyrażenie i nie trzeba żadnych magicznych metod renderowania. To też ułatwia pisanie komponentów, składanie kodu z kaskady wywołań. W Rails 2 to jest b. trudne właśnie z powodu tego zakazu wywołania 2x metody render. To jest kiepski design.
Żeby było jasne: jestem zwolennikiem i popieram oczywiście rozwój Rails 3. Obawiam się tylko, że z rozpędu, Rails 3 odziedziczy kilka niezby dobrych rozwiązań z Rails 2. Jak choćby to, co wyżej napisałem. Do tego by nie doszło gdyby refaktorowano zamiast Rails 2, Merba 1…