Jakie są wady RoR? [Zamknięte]

39

Obecnie próbuję zdecydować, jakiego języka po stronie serwera się uczyć i używać do tworzenia stron internetowych i chociaż stosunkowo łatwo jest uzyskać informacje o tym, dlaczego x, y lub z jest dobrą rzeczą, trudniej jest znaleźć wady każdego z nich z nich.

W szczególności jestem ciekawy, jakie są wady uczenia się i / lub używania Ruby on Rails w przeciwieństwie do jakiegokolwiek innego języka / frameworka.

maxfielden
źródło
5
Bardzo mnie to nienawidziło ASP.NET. To był problem, ponieważ taka była moja codzienna praca.
Jeremy,
5
Po prostu wspominając o tym w komentarzu, na wypadek, gdyby inni chcieli to rozwinąć, ale jedną rzeczą, która jest zarówno profesjonalistą, jak i oszustem, jest to, że RoR może być czasami zbyt „magiczny” - czasami trudno jest zrozumieć, co się dzieje za sceny (a więc jeśli dopiero zaczynasz projektowanie stron internetowych, bierzesz wiele rzeczy za pewnik). Oczywiście dotyczy to w zasadzie wszystkich języków wysokiego poziomu, a także sprawia, że ​​praca z nimi jest łatwiejsza i szybsza.
grautur
1
FWIW, jeśli patrzysz na RoR, zdecydowanie spójrz na ASP.NET MVC3 z Razor. I szczerze mówiąc, jeśli lubisz zarabiać (to na pewno robię), to 40% powodu, dla którego rozwijam się w ASP.NET. Pozostałe 60% to uważam, że jest to najlepszy okres na platformie internetowej, nawet jeśli ma swoje bolesne punkty, które z prawie wszystkich zostały ostatecznie zakończone za pomocą Nuget.
Pomyśl o RoR jako narzędziu do aplikacji CRUD, możesz robić z nim inne rzeczy, ale dla bardziej ogólnych rzeczy inne języki / frameworki są bardziej elastyczne bez bałaganu.
alfa64

Odpowiedzi:

59

Mówiąc z własnego doświadczenia: Minusem jest to, że opierają się na ramach Rails trochę zbyt wiele. Jest to świetna i wspaniała rzecz, jeśli piszesz tylko proste, zielone aplikacje CRUD, które wpadają wprost w „słodki punkt” Railsów; Twoja produktywność gwałtownie wzrośnie. Jednak w momencie, gdy musisz zrobić coś poza tym najsłodszym miejscem - wejść w interakcję z istniejącą bazą danych, porozmawiać z inną aplikacją, która nie ma zdefiniowanego JSON lub XML API, zaimplementować skomplikowany obieg pracy, Railsy staną się twoim wrogiem. to jestmożna robić te rzeczy za pomocą Railsów, ale idzie to „wbrew pozorom”, więc zasadniczo jesteś sam i zastanawiasz się, jak to zrobić, ponieważ społeczność zwykle po prostu odpowiada „Nie rób tego, to nie jest Rails way ”- powoduje to utratę produktywności lub bardzo niechlujny kod, ponieważ w zasadzie musisz włamać się do środowiska Rails.

Jest też niewypowiedziana wada: wszystko inne będzie brzydkie i niechlujne. Kiedy skosztujesz słodkiego, słodkiego nektaru Railsów (dobra, trochę ewangelizując tutaj ...) wszystko inne jest zalewane. Powrót z Railsów z powrotem do PHP, ASP.NET WebForms lub Java jest jak chodzenie po gwoździach po zabawie w bujnym ogrodzie; nie zobaczysz innych języków / ram w tym samym świetle i chociaż nadal możesz je docenić, potajemnie będziesz tęsknił za uściskiem Railsa.

Wayne Molina
źródło
11
Brzmi jak każdy inny framework - w momencie, gdy potrzebujesz czegoś po wyjęciu z pudełka, staje się to walką.
Nemanja Trifunovic
12
Tak, ale okazało się, że jest nieco gorzej z Railsami, ponieważ cała struktura jest zbudowana wokół pomysłu, że nigdy nie będziesz miał powodu, aby potrzebować czegoś „po wyjęciu z pudełka”. Porównaj to z Zend dla PHP lub ASP.NET MVC lub Django dla Pythona, a są one znacznie bardziej elastyczne niż Rails, a jednocześnie dają korzyści z frameworka. Ale to nie jest naprawdę trzask przeciwko Railsom.
Wayne Molina,
3
Ale na szczęście RoR nie jest jedyną platformą internetową opartą na Ruby. Sam wolę Sinatra + Datamapper + Haml / Sass lub alternatywnie Sinatra + Sequel + Sequel + Haml / Sass dla surowego doświadczenia z SQL ... RoR jest świetny w porównaniu do rozwiązań opartych na Javie .NET. Ale jest ciężkim potworem w porównaniu do innych frameworków opartych na Ruby.
Philip
4
Trudno mi ustalić, czy Wayne kocha RoR, czy go nienawidzi. Czy ten związek miłości / nienawiści jest powszechny wśród większości twórców RoR?
Phil
2
@Pilko trochę z kolumny A, trochę z kolumny B. Uwielbiam RoR, chociaż tak naprawdę nie znam go dużo; Próbuję się tego nauczyć, bo to naprawdę miłe. Ale z drugiej strony użyłem go w aplikacji „w prawdziwym świecie” i ugryzło mnie to w dupę, gdy musiałem wyjść poza pudełko aplikacji CRUD, która rozmawia z jedną bazą danych z 1-2 modelami na formularz, i to było to.
Wayne Molina
30

W przypadku twojego pierwszego języka po stronie serwera wydaje mi się, że może być kilka problemów z RoR:

  1. Nie tylko uczysz się języka, uczysz się frameworka. Zdecydowanie poświęciłbym trochę czasu na zabawę zwykłym starym rubinem, zanim wskoczę na szyny.

  2. Ponieważ są to ramy, a jednocześnie „opiniotwórcze”, wydaje mi się, że dałoby to bardzo ograniczony zakres tego, co się dzieje w ramach.

Ogólnie rzecz biorąc, Ruby on Rails może być dobrym punktem wyjścia, aby rzucić piłkę, ale jest wiele do nauczenia się na temat tworzenia stron internetowych, których możesz przegapić, ponieważ zbytnio polegasz na jednej platformie.

GSto
źródło
15

Próbowałem nauczyć się RoR kilka razy i moim największym problemem jest zawsze próba poprawnego działania pakietów i dokumentacji. Problem z dokumentacją polega na tym, że zawsze wydaje się nieaktualna (lub bardzo podstawowa). Dostałem podstawy ze strony, ale poza tym wszystko wydawało się tak przestarzałe (nawet książka, którą kupiłem i w końcu wróciłem). Inną rzeczą, która może być wadą, są zależności między niektórymi bibliotekami oraz sposób, w jaki mogą one powodować konflikty z innymi, jak stwierdził Ben Coe .


Coś, o czym myślałem później i zamiast komentować, po prostu zredaguję moją odpowiedź: RoR ma szansę zrujnować dla ciebie Ruby. Wiem, że kiedy spróbowałem, pomyślałem, że „Ruby była głupia”. Potem kilka miesięcy później postanowiłem dać Ruby szansę i pokochałem ten język, ponieważ dzięki nim nienawidziłem tego języka. Nie zagłębiałem się w to wiele, ale kiedy to zrobiłem, naprawdę podobała mi się Sinatra . Myślę, że czerpałem radość, jaką większość ludzi czerpie z RoR z Sinatry.

Jetti
źródło
+1 Miałem to samo doświadczenie. Próbowałem nauczyć się Ruby on Rails, ale dostałem błąd, robiąc to rake db:migrate. Z drugiej strony uznałem Sinatrę za znacznie prostszą i łatwiejszą do zrozumienia. W każdym razie wolę konfigurować wszystko na swój własny sposób, a podstawowa struktura aplikacji railsowej wydawała mi się zbyt skomplikowana.
Zhehao Mao,
@Zhehao Mao - Cieszę się, że nie jestem jedyny z tym doświadczeniem. Chociaż nie uważam, że jest to skomplikowane ... dopóki myślisz dokładnie tak samo jak DHH. Jeśli masz inny rodzaj procesu myślowego, RoR może być bólem z tyłu.
Jetti
Myślę, że to nie jest tak skomplikowane. Przypuszczam, że mój problem polegał na tym, że za każdym razem, gdy próbowałem stworzyć aplikację railsową, nic nie wychodziło z pudełka tak, jak powinna tego dokumentacja.
Zhehao Mao,
Z tego powodu uważam to za niezwykle skomplikowane. Dlatego też się poddałem. Aby był to RAD, musi działać. Szczerze mówiąc, myślę, że mogłem stworzyć aplikację CRUD w C ++ szybciej niż RoR z powodu wszystkich problemów z uruchomieniem RoR (trochę przesady, ale nadal ...)
Jetti
Nie jestem pewien, czy
czytaliście
12

Jeśli jest to twój pierwszy język po stronie serwera, jest tak dobry, jak każdy inny. Należy skupić się na jednym, a kiedy poczujesz, że go opanowałeś, eksploruj innych i wyciągaj własne wnioski.

Na co dzień pracuję z RoR i ASP.NET, ale co dziwne, wolę świat ASP.NET, ale ma to więcej wspólnego z osobistą filozofią niż z językiem lub samą architekturą. (Jestem trochę maniakiem kontroli i osobiście gram w mocno pisanych językach).

Niezależnie od tego, mówię, spróbuj. RoR to świetne środowisko do pracy, ale zanim przejdziesz do Railsów, poczuj się dobrze z Ruby jako językiem. Poza materiałami internetowymi, Ruby jest całkiem fajnym językiem skryptowym, jeśli skończysz z zarządzaniem skrzynką * nix i możesz zaoszczędzić mnóstwo czasu.

Marlon
źródło
4
+1 dla maniaka kontroli. Mam też trochę tej passy. Nie tylko dla silnego typu, ale także - właściwie w pewnym sensie konfiguruję (pomimo gadatliwości), zamiast konwencji, które zakładają dla mnie założenia.
Bobby Tables,
Ditto, @Bobby Stoły!
Marlon,
6

Jako ktoś, kto ostatnio nauczył się Railsów (jako hobby - nigdy nie używał go do rozwoju klasy komercyjnej) i pracował już w JEE i ASP.NET, odpowiedź Wayne M brzmiała bardzo prawdziwie.

W każdym razie jest jeszcze subtelna strona, o której nikt jeszcze nie wspomniał, ale która trochę mnie niepokoiła z Railsami - silne poleganie na konwencji nad konfiguracją .

Zasadniczo, jeśli jesteś przyzwyczajony do orientacji opartej na „znajdowaniu w plikach” z nową bazą kodu, CoC może cię zirytować podczas próby pobrania Railsów. Doskonale nadaje się do prostych zielonych pól CRUD, które są wykonywane dokładnie tak, jak Rails (jak Wayne M), ale w przypadku czegoś bardziej wyjątkowego i skomplikowanego ciężko będzie zorientować się, co się dzieje, jeśli spróbujesz wypracować przepływ, szukając w plikach, aby zobaczyć, jak podłączona jest instalacja wodno-kanalizacyjna.

Chociaż myślę, że ten problem prawdopodobnie nie będzie tak zły, gdy będziesz mieć dużo więcej doświadczenia z Railsami. Zdecydowanie widzę, że jest to problem dla kogoś, kto pochodzi ze starego web Java / .NET, który jest przyzwyczajony do bardzo pełnego przepływu konfiguracji - i jest przyzwyczajony do tego, że wszystko gdzieś się pisze.

Stoły Bobby'ego
źródło
1
Na początku trochę mi to przeszkadzało, ale potem już nie. Wspaniale było napisać migrację bazy danych, aby utworzyć nowe kolumny, a następnie dołączyć logikę biznesową do nowych danych bez oddzielnego kroku mapowania.
kevin cline
@kevincline Jak to osiągnąć w RoR? Możesz to zrobić za pomocą AOP w świecie Java i .NET.
zmiażdżyć
@crush: Jest to bolesne w Javie i .NET, ponieważ musisz jawnie tworzyć i mapować właściwości w odwzorowanej klasie dla każdej kolumny w bazie danych, której używa logika biznesowa. Dodanie kolumny oznacza zmianę wielu klas. RoR robi to wszystko zgodnie z konwencją. Zmodyfikujesz schemat bazy danych, a następnie zmienisz logikę biznesową i warstwę prezentacji, aby użyć nowej kolumny.
kevin cline
5

Ze mną największym problemem jest uczenie się mojego pierwszego X (w twoim przypadku X jest językiem / frameworkiem sieciowym po stronie serwera), gdy tylko widzę inne problemy, od razu chcę zacząć stosować X, nawet jeśli może nie być najlepszą opcją. W tym poprawiłem się, ale wciąż jest to silna tendencja.

Ruby on Rails to dobry wybór na początek - jest dobra społeczność, mnóstwo dokumentacji i dobre samouczki. Pamiętaj jednak, aby pamiętać o alternatywnych rozwiązaniach, zwłaszcza jeśli zaczniesz robić więcej tworzenia stron internetowych. RoR może być przesadą w przypadku niektórych problemów, nieodpowiednimi rozwiązaniami dla innych i najlepszym wyborem dla innego zestawu. Wiedz, że to mocne i słabe strony oraz jak korzystać z tego narzędzia.

Thomas Owens
źródło
4

Radzę mieć jasny obraz projektu, który chcesz ukończyć, a następnie po prostu zacznij go budować. Gdy napotkasz problemy, w końcu zdobędziesz wszystkie odpowiednie narzędzia. Takie podejście jest dobre, ponieważ podejmujesz decyzje na podstawie zwięzłych problemów.

Kolejną rzeczą do zrobienia jest kupowanie książek. Samouczki internetowe nie ograniczają tego z mojego doświadczenia; pozostawiają też dużo miejsca na rozrywkę. Kiedy masz książkę, wydawcy muszą upewnić się, że zapewnia ona wartość, ponieważ stracą pieniądze, jeśli otrzymają złe recenzje. Wydając trochę pieniędzy zaoszczędzisz dużo czasu.

spencer
źródło
Ale nie zapomnij o railscasts.com. Wykonuje znakomitą robotę, przedstawiając przegląd tematu / koncepcji w około 10 minut. Pamiętam, jak spędziłem cały weekend próbując zmusić Sunspot do pracy, a potem obejrzałem 10-minutowy Railscast o tym, jak zaimplementować wyszukiwanie aspektowe, i uruchomiłem go w niecałą godzinę. Cóż, warte 9 USD / miesiąc.
Kyle Carlson
1

Naprawdę nie rozumiem tych, którzy poetycko opowiadają o tym, czym jest spacer po ogrodzie Ruby-on-Rails. Doszedłem do tego jako doświadczony programista ASP.NET-MVC, Java, PHP, Python - i okazało się, że jest to najokropniejszy strata czasu! 90 procent internetowych odpowiedzi w Google jest niepoprawnych lub niekompletnych. Dlaczego? Czy to zmienia się tak bardzo każdego roku? A może nikt nie dba o to, aby kod rzeczywiście działał? Zajęło mi mnóstwo czasu, aby po prostu zrobić proste rzeczy; daleko więcej niż zajęłoby mi to na przykład C # / ASP.NET-MVC. Na pewno nigdy tak długo nie zajęło mi nauczenie się moich oryginalnych technologii. To prawda, ROR jest zwięzły. Jeśli to dla ciebie ważne. Ale rzadko stwierdziłem, jak stworzyć kod, który wykona zadanie. Osobiście wolałbym pisać na klawiaturze przez 20 sekund, aby napisać kod, który zdecydowanie działa, jest jasne i możesz go przestrzegać, zamiast wpisywać zwięzły kod Ruby przez 2 sekundy, ale to nigdy nie działa, dopóki nie sypię całą noc, szukając jakiegoś sposobu, aby rzeczywiście działał. To okropna, śmierdząca kupa dodo. Dlaczego? Czy to ten kod typu open source (jak w darmowym) nie zachęca do uczynienia go narzędziem wysokiej jakości? Zbyt wielu dzieciaków ze skryptami pompujących wersje i moduły oraz złą dokumentację? Nie wiem Ale kiedy w końcu udało mi się uciec od pierwszego projektu Ruby-Rails, przysięgałem, że nigdy więcej nie wejdę w ten bałagan! nie zachęca, aby stało się narzędziem wysokiej jakości? Zbyt wielu dzieciaków ze skryptami pompujących wersje i moduły oraz złą dokumentację? Nie wiem Ale kiedy w końcu udało mi się uciec od pierwszego projektu Ruby-Rails, przysięgałem, że nigdy więcej nie wejdę w ten bałagan! nie zachęca, aby stało się narzędziem wysokiej jakości? Zbyt wielu dzieciaków ze skryptami pompujących wersje i moduły oraz złą dokumentację? Nie wiem Ale kiedy w końcu udało mi się uciec od pierwszego projektu Ruby-Rails, przysięgałem, że nigdy więcej nie wejdę w ten bałagan!

James Hurst
źródło
ten post jest raczej trudny do odczytania (ściana tekstu). Czy mógłbyś edytować go w lepszym kształcie?
komara
Ta odpowiedź jest przezabawna. Szyny to zdecydowanie, obiektywnie, oszczędność czasu. Twoje pretensje do niego są po prostu dlatego, że jesteś nowy i oczekujesz, że wszystko kliknie w ciągu pierwszych kilku tygodni. Same migracje baz danych są warte przejścia na Railsy.
sergserg,
0

Zgadzam się z niektórymi z powyższych odpowiedzi na temat RoR, od dwóch lat rozwijam aplikacje w RoR. Jest naprawdę dobry z prostymi aplikacjami, operacje CRUD (tworzenie, odczyt, aktualizacja i usuwanie) działają bardzo dobrze, jest dobrodziejstwem dla tworzenia prostych aplikacji, ale jest także jego ograniczeniami. Chociaż istnieje wiele klejnotów oferuje różne zalety i łatwość użycia, to w zasadzie to. Wyjście z pudełka sprawi, że wszystkie aplikacje będą przekręcone.

Jeśli jesteś dużym zespołem pracującym nad aplikacją korzystającą z RoR, delegowanie pracy może być trudne.

Prashanth Pendurthi
źródło
Jedną rzeczą, która mnie czasami zaskakiwała, było to, że wiele klejnotów, które wydają się być niezależne od RoR, okazują się być używane tylko z RoR, a nie osobno. Bardzo ciekawi dlaczego tak jest. PS: Nie jestem programistą Ruby, więc mogłem mieć złe wrażenie. Ale natknąłem się na to kilka razy. Niestety w tej chwili nie mam przykładów .
Htbaa