Was sind die Nachteile von RoR? [geschlossen]

39

Ich versuche derzeit zu entscheiden, welche serverseitige Sprache für die Webentwicklung gelernt und verwendet werden soll. Obwohl es relativ einfach ist, Informationen darüber zu erhalten, warum x, y oder z eine gute Sache sind, ist es schwieriger, die Nachteile der einzelnen Sprachen herauszufinden von ihnen.

Insbesondere bin ich neugierig, welche Nachteile das Lernen und / oder Verwenden von Ruby on Rails im Gegensatz zu anderen vorgegebenen Sprachen / Frameworks hat.

maxfielden
quelle
5
Es hat mich dazu gebracht, ASP.NET sehr zu hassen. Was ein Problem war, da das mein Tagesjob war.
Jeremy
5
Erwähnen Sie dies einfach in einem Kommentar, falls andere dies näher erläutern möchten, aber eine Sache, die sowohl ein Plus als auch ein Minus ist, ist, dass RoR manchmal etwas zu "magisch" sein kann - manchmal ist es schwer zu verstehen, was dahinter steckt die Szenen (und so, wenn Sie neu in der Webentwicklung sind, werden Sie eine Menge Dinge für selbstverständlich halten). Dies gilt natürlich grundsätzlich für alle Hochsprachen und erleichtert und beschleunigt die Arbeit mit ihnen.
Freitag,
1
FWIW, wenn Sie RoR suchen, schauen Sie sich auf jeden Fall ASP.NET MVC3 mit Razor an. Und ehrlich gesagt, wenn Sie gerne bezahlt werden (das bin ich mir sicher), sind das 40% der Gründe, die ich in ASP.NET entwickle. Die anderen 60% sind meiner Meinung nach die beste Zeit für eine Webplattform, auch wenn sie ihre Schwachstellen hat, die fast alle mit Nuget beendet wurden.
Stellen Sie sich RoR als Tool für CRUD-Apps vor, Sie können andere Dinge damit tun, aber für allgemeinere Dinge sind andere Sprachen / Frameworks flexibler, ohne dass es zu Problemen kommt.
Alfa64

Antworten:

59

Aus Erfahrung: Der Nachteil ist, dass Sie sich etwas zu sehr auf das Rails-Framework verlassen . Dies ist eine großartige und wunderbare Sache, wenn Sie nur einfache, auf der grünen Wiese befindliche CRUD-Apps schreiben, die genau in den "Sweet Spot" von Rails passen. Ihre Produktivität wird in die Höhe schnellen. In dem Moment, in dem Sie etwas außerhalb dieses Sweetspots tun müssen - interagieren Sie mit einer vorhandenen Datenbank, sprechen Sie mit einer anderen Anwendung, für die keine JSON- oder XML-API definiert ist, und implementieren Sie einen komplizierten Workflow. Rails wird Ihr Feind. Es istEs ist zwar möglich, diese Dinge mit Rails zu tun, aber das ist "gegen den Strich". Sie müssen also im Grunde genommen selbst herausfinden, wie es geht, da die Community in der Regel nur mit "Mach das nicht, das sind nicht die Rails" antwortet way "- dies führt entweder zu Produktivitätsverlusten oder zu sehr unordentlichem Code, da Sie sich im Grunde um das Rails-Framework kümmern müssen.

Außerdem gibt es den unausgesprochenen Nachteil: Alles andere wird hässlich und klobig erscheinen. Sobald Sie den süßen, süßen Nektar von Rails probiert haben (okay, evangelisieren Sie hier nur ein bisschen ...), ist alles andere gut. Wenn Sie von Rails zurück zu PHP, ASP.NET WebForms oder Java wechseln, fühlen Sie sich wie auf einem Nagelbett, wenn Sie in einem üppigen Garten herumtollen. Sie werden die anderen Sprachen / Frameworks nicht im selben Licht sehen, und obwohl Sie sie vielleicht immer noch schätzen, werden Sie sich insgeheim nach Rails liebevoller Umarmung sehnen.

Wayne Molina
quelle
11
Klingt wie jedes andere Framework - sobald Sie etwas brauchen, das nicht mehr in der Verpackung ist, wird es zum Kampf.
Nemanja Trifunovic
12
Ja, aber ich habe festgestellt, dass es mit Rails etwas schlimmer ist, da das gesamte Framework auf der Idee basiert, dass Sie niemals einen Grund haben werden, etwas "out of the box" zu benötigen. Vergleichen Sie das mit Zend für PHP oder ASP.NET MVC oder Django für Python und sie sind viel flexibler als Rails und bieten dennoch die Vorteile eines Frameworks. Das ist allerdings kein wirklicher Slam gegen Rails.
Wayne Molina
3
Glücklicherweise ist RoR jedoch nicht das einzige Ruby-basierte Webframework. Ich selbst bevorzuge Sinatra + Datamapper + Haml / Sass oder alternativ Sinatra + Sequel + Sequel + Haml / Sass für SQL-Grundkenntnisse ... RoR ist im Vergleich zu Java- oder .NET-basierten Lösungen großartig. Aber es ist ein schweres Monster im Vergleich zu anderen Ruby-basierten Web-Frameworks.
Philip
4
Es fällt mir schwer festzustellen, ob Wayne RoR liebt oder hasst. Ist diese Hassliebe bei den meisten RoR-Entwicklern üblich?
Phil
2
@ Phil ein bisschen von Spalte A, ein bisschen von Spalte B. Ich liebe RoR, obwohl ich nicht wirklich viel davon weiß; Ich versuche es immer wieder zu lernen, weil es wirklich schön ist. Aber andererseits habe ich es in einer "realen Welt" -App verwendet und es hat mich in den Arsch gebissen, als ich über die Grenzen einer CRUD-App hinaus musste, die mit einer einzelnen Datenbank mit 1-2 Modellen pro Formular kommuniziert. und das war es.
Wayne Molina
30

Für Ihre erste serverseitige Sprache kann es meines Erachtens ein paar Probleme mit RoR geben:

  1. Du lernst nicht nur eine Sprache, du lernst einen Rahmen. Ich würde definitiv etwas Zeit brauchen, um mit einfachem altem Rubin herumzuspielen, bevor ich auf Schienen springe.

  2. Da es sich um ein Framework handelt und es sich dabei um ein „meinungsbildendes“ Framework handelt, würde es Ihnen meines Erachtens nur einen sehr begrenzten Einblick in das geben, was alles im Framework vor sich geht.

Insgesamt kann Ruby on Rails ein guter Ausgangspunkt sein, um den Ball ins Rollen zu bringen, aber es gibt eine Menge zu lernen über die Webentwicklung, die Sie möglicherweise verpassen, wenn Sie zu stark auf ein einzelnes Framework angewiesen sind.

GSto
quelle
15

Ich habe mehrmals versucht, RoR zu lernen, und mein größtes Problem ist immer, die Pakete zum korrekten Funktionieren zu bringen und die Dokumentation. Das Problem mit der Dokumentation ist, dass sie immer veraltet (oder sehr einfach) zu sein scheint. Ich habe die Grundlagen von der Seite bekommen, aber darüber hinaus schien alles so veraltet zu sein (sogar das Buch, das ich gekauft und am Ende zurückgegeben habe). Ein weiterer Nachteil könnten die Abhängigkeiten sein, die einige Bibliotheken haben, und wie sie mit anderen in Konflikt geraten können, wie von Ben Coe angegeben .


Etwas, woran ich später gedacht habe und anstatt es zu kommentieren, bearbeite ich einfach meine Antwort: RoR hat eine Chance, Ruby für dich zu ruinieren. Ich weiß, als ich es versuchte, dachte ich, dass "Ruby dumm war". Dann, ein paar Monate später, beschloss ich, Ruby auszuprobieren und liebte die Sprache. Es war der Rahmen, der mich dazu brachte, die Sprache zu hassen. Ich habe mich nicht viel damit beschäftigt, aber als ich es tat, hat mir Sinatra sehr gut gefallen . Ich glaube, ich habe die Freude, die die meisten Menschen aus Sinatra von RoR bekommen.

Jetti
quelle
+1 Ich hatte die gleiche Erfahrung. Ich habe versucht, Ruby on Rails zu lernen, aber ich habe nur dadurch einen Fehler bekommen rake db:migrate. Andererseits fand ich Sinatra viel einfacher und verständlicher. Ich setze die Dinge jedenfalls lieber auf meine eigene Art und Weise, und die Grundstruktur einer Rails-App erschien mir einfach zu kompliziert.
Zhehao Mao
@ Zhehao Mao - Ich bin froh zu sehen, dass ich nicht der einzige mit dieser Erfahrung bin. Obwohl, ich denke nicht, dass es kompliziert ist ... solange Sie genauso denken wie DHH. Wenn Sie eine andere Art von Denkprozess haben, kann RoR ein Schmerz im Hintergrund sein.
Jetti
Ich denke, es ist nicht so kompliziert. Ich vermute, mein Problem war, dass jedes Mal, wenn ich versuchte, eine Rails-App zu erstellen, nichts so funktionierte, wie es in der Dokumentation vorgesehen war.
Zhehao Mao
Ich fand es auch deswegen unglaublich kompliziert. Deshalb habe ich auch aufgegeben. Damit es RAD ist, muss es funktionieren. Ich denke ehrlich, ich hätte eine CRUD-App in C ++ schneller als RoR machen können, weil ich Probleme hatte, RoR zum Laufen zu bringen (ein bisschen übertrieben, aber immer noch ...)
Jetti
Ich bin mir nicht sicher, ob ihr die richtigen Dokumente gelesen habt oder warum ihr nicht um Hilfe
gebeten habt
12

Wenn dies Ihre erste serverseitige Sprache ist, ist sie so gut wie jede andere. Sie müssen sich auf eines konzentrieren und, nachdem Sie das Gefühl haben, es gemeistert zu haben, andere erforschen und Ihre eigenen Schlussfolgerungen ziehen.

Ich arbeite täglich mit RoR und ASP.NET, aber seltsamerweise bevorzuge ich die ASP.NET-Welt, aber das hat mehr mit persönlicher Philosophie zu tun als mit der Sprache oder der Architektur selbst. (Ich bin ein bisschen ein Kontrollfreak und ich persönlich mag stark getippte Sprachen).

Egal, ich sage, probieren Sie es aus. RoR ist eine großartige Umgebung zum Arbeiten, aber bevor Sie direkt zu Rails wechseln, sollten Sie sich mit Ruby als Sprache vertraut machen. Ruby ist nicht nur eine Web-Sprache, sondern auch eine ziemlich coole Skriptsprache, wenn Sie eine * nix-Box verwalten müssen und viel Zeit sparen können.

Marlon
quelle
4
+1 für Kontrollfreak. Ich habe auch ein bisschen davon. Nicht nur für starken Typ, sondern auch - ich habe tatsächlich eine Art Konfiguration (trotz der Ausführlichkeit), anstatt Konventionen, die Annahmen für mich treffen.
Bobby Tables
Das Gleiche gilt für @Bobby Tables!
Marlon
6

Als jemand, der kürzlich Rails gelernt hat (als Hobby - hat es nie für kommerzielle Zwecke verwendet) und bereits in JEE und ASP.NET gearbeitet hat, war die Antwort von Wayne M sehr zutreffend.

Wie auch immer, es gibt eine subtile Seite, die noch niemand erwähnt hat, die mich aber bei Rails ein wenig gestört hat - das starke Vertrauen in die Konvention über die Konfiguration .

Wenn Sie es gewohnt sind, mit einer neuen Codebasis in Dateien zu suchen, nervt Sie CoC wahrscheinlich, wenn Sie versuchen, Rails zu finden. Es ist großartig für einfache CRUD-Greenfields, die genau nach dem Rails-Prinzip ausgeführt werden (wie Wayne M sagt), aber für etwas Einzigartigeres und Komplizierteres wird es schwierig sein, herauszufinden, was los ist, wenn Sie versuchen, den Fluss durch Suchen herauszufinden Zeug in Dateien, um zu sehen, wie die Klempnerarbeit angeschlossen ist.

Obwohl ich denke, dass dieses Problem wahrscheinlich nicht so schlimm sein wird, wenn Sie viel mehr Erfahrung mit Rails haben. Ich kann definitiv sehen, dass dies ein Problem für jemanden ist, der aus der Java / .NET-Webentwicklung von oldskool stammt, der an einen sehr ausführlichen Konfigurationsfluss gewöhnt ist - und sich darauf verlässt, dass alles irgendwo geschrieben wird.

Bobby Tische
quelle
1
Das hat mich zuerst ein bisschen gestört, dann aber nicht mehr. Es war großartig, eine Datenbankmigration schreiben zu können, um neue Spalten zu erstellen, und dann Geschäftslogik an die neuen Daten anzuhängen, ohne dass ein separater Mapping-Schritt erforderlich ist.
Kevin Cline
@ Kevincline Wie erreichen Sie das in RoR? Sie können dies mit AOP in der Java- und .NET-Welt tun.
Crush
@crush: In Java und .NET ist dies schmerzhaft, da Sie für jede Spalte in der Datenbank, die von der Geschäftslogik verwendet wird, explizit Eigenschaften in der zugeordneten Klasse erstellen und zuordnen müssen. Das Hinzufügen einer Spalte bedeutet das Ändern mehrerer Klassen. All dies erledigt RoR zur Laufzeit gemäß Konvention. Sie ändern das Datenbankschema und dann nur die Geschäftslogik und die Präsentationsebene, um die neue Spalte zu verwenden.
Kevin Cline
5

Bei mir ist das größte Problem, dass ich mein erstes X lerne (in Ihrem Fall ist X eine serverseitige Web-Sprache / Framework). Sobald ich andere Probleme sehe, möchte ich sofort mit der Anwendung von X beginnen, auch wenn dies der Fall ist ist möglicherweise nicht die beste Option. Ich bin darin besser geworden, aber es ist immer noch eine starke Tendenz.

Ruby on Rails ist für den Anfang eine gute Wahl - es gibt eine gute Community, viele Dokumentationen und gute Tutorials. Denken Sie jedoch unbedingt an die Alternativen, insbesondere wenn Sie mehr Web-Entwicklung betreiben. RoR könnte für einige Probleme zu viel sein, für andere eine unzureichende Lösung und für ein anderes Set die beste Wahl. Kennen Sie die Stärken, Schwächen und die Verwendung des Tools.

Thomas Owens
quelle
4

Mein Rat wäre, sich ein klares Bild von dem Projekt zu machen, das Sie abschließen möchten, und dann einfach zu versuchen, es zu erstellen. Wenn Sie auf Probleme stoßen, finden Sie schließlich die richtigen Werkzeuge. Dieser Ansatz ist gut, weil Sie Entscheidungen auf der Grundlage prägnanter Probleme treffen.

Eine andere Sache zu tun ist, Bücher zu kaufen. Internet-Tutorials machen es meiner Erfahrung nach nicht einfacher. Sie lassen auch viel Raum für Ablenkung offen. Wenn Sie ein Buch haben, müssen die Verlage sicherstellen, dass es einen Mehrwert bietet, da sie bei schlechten Rezensionen Geld verlieren. Wenn Sie ein wenig Geld ausgeben, sparen Sie viel Zeit.

Spencer
quelle
Aber vergessen Sie nicht Railscasts.com. Er leistet hervorragende Arbeit, um Ihnen in ca. 10 Minuten einen Überblick über ein Thema / Konzept zu geben. Ich erinnere mich, dass ich ein ganzes Wochenende damit verbracht habe, Sunspot zum Laufen zu bringen, und dann einen 10-minütigen Railscast über die Implementierung einer facettierten Suche angesehen habe und es in weniger als einer Stunde betriebsbereit hatte. GUT die 9 $ / Monat wert.
Kyle Carlson
1

Ich kann ehrlich gesagt nicht verstehen, wer poetisch darüber nachdenkt, was ein Spaziergang im Garten Ruby-on-Rails ist. Ich bin als erfahrener ASP.NET-MVC-, Java-, PHP- und Python-Entwickler dazu gekommen - und fand es die schrecklichste Zeitverschwendung aller Zeiten! 90 Prozent der Online-Google-Antworten sind falsch oder unvollständig. Warum? Hat es sich jedes Jahr so ​​sehr verändert? Oder kümmert sich niemand darum, dass Code tatsächlich funktioniert? Ich brauchte sehr viel Zeit, um einfache Dinge zu tun. weit, weit mehr, als ich zum Beispiel in C # / ASP.NET-MVC brauche. Ich habe sicherlich nie annähernd so lange gebraucht, um meine ursprünglichen Technologien zu erlernen. Zugegeben, ROR ist knapp. Wenn dir das wichtig ist. Aber ich fand es selten klar, wie man Code erstellt, der eine Aufgabe erledigt. Persönlich würde ich lieber 20 Sekunden lang auf einer Tastatur tippen, um Code zu schreiben, der definitiv funktioniert. Es ist klar, und Sie können ihm folgen, anstatt 2 Sekunden lang knappen Ruby-Code einzugeben. Dies funktioniert jedoch erst, wenn ich die ganze Nacht wach bin und nach einer Möglichkeit Ausschau halte, es tatsächlich zum Laufen zu bringen. Es ist ein schrecklicher, stinkender Haufen Dodo. Warum? Ist es der Open-Source-Code (wie im kostenlosen), der keine Anreize schafft, ihn zu einem Qualitätswerkzeug zu machen? Zu viele Script-Kiddies, die Revisionen und Module und schlechte Dokumentation hineinpumpen? Ich weiß es nicht. Aber als ich endlich diesem ersten Ruby-Rails-Projekt entkommen konnte, schwor ich, dass ich nie wieder in dieses Chaos geraten würde! schafft keine Anreize, es zu einem Qualitätswerkzeug zu machen? Zu viele Script-Kiddies, die Revisionen und Module und schlechte Dokumentation hineinpumpen? Ich weiß es nicht. Aber als ich endlich diesem ersten Ruby-Rails-Projekt entkommen konnte, schwor ich, dass ich nie wieder in dieses Chaos geraten würde! schafft keine Anreize, es zu einem Qualitätswerkzeug zu machen? Zu viele Script-Kiddies, die Revisionen und Module und schlechte Dokumentation hineinpumpen? Ich weiß es nicht. Aber als ich endlich diesem ersten Ruby-Rails-Projekt entkommen konnte, schwor ich, dass ich nie wieder in dieses Chaos geraten würde!

James Hurst
quelle
Dieser Beitrag ist ziemlich schwer zu lesen (Textwand). Hätten Sie etwas dagegen bearbeiten sie in eine bessere Form ing?
gnat
Diese Antwort ist komisch. Rails ist auf jeden Fall objektiv eine Zeitersparnis. Ihr Groll dagegen liegt nur daran, dass Sie neu darin sind und erwarten, dass in den ersten Wochen alles klickt. Allein die Datenbankmigrationen sind für Rails einen Umstieg wert.
Sergserg
0

Ich schlage vor, Sie schauen sich Indizes an, die die Entwicklung verschiedener Sprachen / Skripte bewerten. Hier ist ein Link, der sich als nützlich erweisen könnte: beliebte, professionell verwendete Web-bezogene Sprachen.

Dies zeigt die relative Popularität von webbezogenen Sprachen basierend auf der Suche nach Online-Stellenangeboten.

Telis Duvoir
quelle
0

Ich stimme einigen der obigen Antworten zu RoR zu. Ich habe in den letzten zwei Jahren Anwendungen mit RoR entwickelt. Die CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) eignen sich hervorragend für einfache Anwendungen. Sie sind ein Segen für die Entwicklung einfacher Anwendungen, haben aber auch ihre Grenzen. Obwohl es viele Edelsteine ​​gibt, die verschiedene Vorteile und Benutzerfreundlichkeit bieten, ist es im Grunde genommen. Wenn Sie die Box verlassen, werden alle Anwendungen verdreht.

Wenn Sie ein großes Team sind, das mit RoR an einer Anwendung arbeitet, kann es schwierig sein, die Arbeit zu delegieren.

Prashanth Pendurthi
quelle
Eine Sache, die mich gelegentlich überraschte, war, dass sich herausstellte, dass viele Edelsteine, die anscheinend unabhängig von RoR zu sein scheinen, nur mit RoR verwendet werden konnten und nicht als eigenständige Edelsteine. Sehr neugierig, warum das so ist. PS: Ich bin kein Ruby-Programmierer, daher hätte ich vielleicht einen falschen Eindruck bekommen. Aber ich bin ein paar Mal darauf gestoßen. Leider habe ich im Moment keine Beispiele .
Htbaa