Was sind die Vorteile von Ruby on Rails? Nach zwei Jahrzehnten Programmieren verwende ich Rails
Veröffentlicht: 2022-03-11Manchmal höre ich Leute, die sich über ihre Kunden beschweren, dass sie darauf bestehen , Rails zu benutzen, dass sie zu viel Kool Aid bekommen haben. Wenn sie Personalvermittler sind, wird ihnen fast übel, wenn sie einen weiteren Entwickler für Ruby on Rails „primadona“ finden müssen. Dann ziehen sie etwas Ähnliches wie diesen erstaunlich ignoranten Vergleich zwischen Git und PHP heraus, um ihren Standpunkt zu beweisen. „Sie wissen nicht einmal, was sie verlangen“, sagen sie.
Für uns als Programmierer scheint es tatsächlich manchmal so, als hätten unsere Kunden keine Ahnung. Wir lieben es, solche Fälle zu übertreiben. Wenn man ein bisschen darüber nachdenkt, scheint es nicht richtig zu sein, zu glauben, dass eine Person, die mir Geld gibt, um Dinge zu bauen, irgendwie begrenzt ist und „es einfach nicht bekommt“. Tatsächlich glaube ich, dass die meisten Kunden ihre Möglichkeiten gut kennen und sich dennoch für Rails entscheiden.
Ich werde versuchen zu erklären, was Rails meiner Meinung nach so vorteilhaft macht, dass es für eine Fülle von Projekten und Anforderungen ernsthaft in Betracht gezogen wird.
Vorteile von Rubin
Es ist möglich, dass niemand die Vorteile von Ruby kennt, wenn Rails nicht selbst wäre. Einige Leute schmälern Ruby gerne, indem sie sagen, dass es „so einfach für Ruby“ mit seinem „Ritter in glänzender Rüstung namens Rails“ sei und dass ohne Rails „Ruby irrelevant“ wäre. Ich kann nicht sicher sagen, ob das stimmt oder nicht, aber ich weiß, dass es eine große Schande wäre, wenn die Welt eine so großartige Sprache verpassen würde. Fakt ist: Der Rails-Autor hat sich bewusst für Ruby entschieden, und seine „wilde“ Wette hat sich mit großem Interesse ausgezahlt. Was er damals sah, können viele andere heute sehen. Ruby befähigt Programmierer irgendwie auf eine besondere Weise, die der „ungewaschenen Masse“ so schwer zu erklären ist. Warum also Ruby on Rails verwenden? Ruby macht Programmierer glücklich, wie angekündigt.
Während die meisten Entwickler darin übereinstimmen, dass Ruby praktisch ist, sehen einige es als zu viel an. Sie machen sich Sorgen darüber, was mit all den Freiheiten passieren könnte, die Ruby zulässt, all dem Potenzial für Missbrauch. Lassen Sie mich das mit etwas Monkey-Patching veranschaulichen:
"1".to_i #=> 1 class String def to_i raise 'foobar' end end "1".to_i #=> RuntimeError: foobar
So einfach ist das: Mit nur fünf Codezeilen haben wir eine vorhandene Klasse genommen und ihr Verhalten überschrieben. Nichts ist heilig – nicht einmal ein String. Dieser spezielle Fehler wäre leicht zu erkennen, aber die Dinge können viel unheimlicher werden:
class String def to_i self.to_f - 1.13 end end "2".to_i #=> 0.8700000000000001
Auf diese Weise haben wir einen Fehler in die String-Klasse eingeführt, der durch Komplexitätsschichten umhüllt und verschleiert werden könnte.
Sie denken vielleicht: Können alle und ihre Mutter meine wertvolle Bewerbung durcheinander bringen? Während dieses Verhalten tatsächlich beängstigend aussieht, ist es das wirklich nicht. In den fünf Jahren, in denen ich Ruby verwendet habe, hatte ich genau null Probleme mit diesem Verhalten. Es mag kontraintuitiv erscheinen, aber andererseits fährt man Autos mit 60 MPH in entgegengesetzte Richtungen, die nur durch eine dünne weiße Linie in der Mitte der Straße getrennt sind. In der Praxis funktionieren beide bemerkenswert gut.
Ein weiterer Vorteil ist, dass Ruby ein vielseitiges Werkzeug ist. Als solches hat es scharfe, messerartige Kanten. Ich denke gerne, dass Erwachsene gut mit Messern umgehen können – Kindersicherung ist für, nun ja, Kinder (Tweet). Und wenn Sie in der IT wie ein Kind behandelt werden, werden Sie Opfer von Paul Grahams Blub-Paradoxon: Sie glauben, ohne bestimmte Funktionen, die Sie nicht verstehen, oder von denen Ihnen jemand gesagt hat, dass Sie zu gefährlich sind, besser dran zu sein. Natürlich fragen wir uns heute „warum Ruby on Rails verwenden“; daher ist dies eine Debatte für ein anderes Mal. Zugegebenermaßen vermisst Ruby einige Features, die andere Sprachen haben (Lisp hmm, hmm). Alles in allem steht Ruby an der Spitze des „Language Power Continuum“.
Meine ersten paar Jahre mit Ruby waren demütigend. Ich habe so viel gelernt, indem ich einfach den Code anderer gelesen habe. Manchmal war ich erstaunt; manchmal war ich wütend; aber schließlich ermöglichte mir dieses Wissen, viel effektiver als zuvor mit meinem Computer zu kommunizieren. Einige andere „bürokratische“ Sprachen tun mir fast leid, die Sie dazu bringen, durch Reifen zu springen, nur um durch sie zu springen, während Sie gleichzeitig sagen: „Ich tue nur das Beste für Sie, es ist zu Ihrem eigenen Besten!“
Pragmatismus
Es gibt einen tiefen Respekt vor Pragmatismus, der auf der niedrigstmöglichen Ebene in die DNA von Rails eingewoben ist. In Kombination mit den Vorteilen von Ruby führt dieser Pragmatismus zu eleganten Lösungen und ermutigt/inspiriert die Entwicklergemeinschaft von Ruby on Rails, dasselbe zu tun. Pragmatismus wird oft als Rails-Zelt beworben, also ist diese Behauptung nicht neu, aber ich wurde vor kurzem an ihre Wahrhaftigkeit erinnert, als ein Freund von mir versuchte, mir zu zeigen, wie „cool“ Hibernate wirklich ist. Er kämpfte. Ich konnte seinen Schmerz spüren, da er nicht in der Lage war, eine Vielzahl von Optionen und Konfigurationsparametern festzulegen, die von vornherein Framework-Standardwerte hätten sein sollen.
Mit zunehmendem Alter sind meine Ansprüche an künstliche Komplexität immer höher geworden. Wenn man bedenkt, dass ich 1989 im Alter von 11 Jahren mit dem Schreiben von Produktionscode begann (beginnend mit einem Projekt für meinen Nachbarn in Clipper Summer '87), habe ich eine nahezu null Toleranz für unnötige Komplikationen. Und Rails schneidet in dieser Abteilung wirklich gut ab. Es ist mehr als nur „Konvention über Konfiguration“; Ich spreche von der ganzen pragmatischen Denkweise, die innerhalb der Rails-Community hoch geschätzt wird und sich durch sie hindurchzieht.
Ausdruckskraft
Rails kommt dem Englischen so nahe wie es nur geht (es sei denn, Sie verwenden COBOL). Es verwendet eine sogenannte interne DSL und erweitert Ruby um eine eigene Semantik. Der Aufbau einer DSL ist immer gefährlich, da Sie effektiv eine neue Sprache entwickeln. Da es intern ist, müssen Sie keinen externen Parser verwenden, aber in gewisser Weise fühlt es sich wie eine neue Sprache an. Das Rails-Team hat mit seinem DSL eine gute Balance gefunden, es dort einzusetzen, wo es sinnvoll ist, es nur selten zu übertreiben und dabei eine hervorragende Selbstbeherrschung bewiesen. Ich denke, dass jeder Programmierer, unabhängig von seiner Rails-Erfahrung (und sogar einige Nicht-Programmierer), dies verstehen könnte:

class User < ActiveRecord::Base devise :database_authenticatable, :registerable validates_numericality_of :years_of_experience, :allow_blank => true acts_as_taggable acts_as_taggable_on :certificates, :expertise_kinds validates_presence_of :first_name, :last_name, :email has_many :translations has_attached_file :avatar, :styles => {:small => "240x240>"} has_attached_file :cv ...
Wenn Sie mit Ruby nicht vertraut sind, sieht das vielleicht sogar seltsam aus – es ist fast so, als wäre es keine Programmiersprache. Sobald Sie feststellen, dass es sich nur um Methodenaufrufe ohne Klammern handelt, können Sie loslegen. Dennoch fühlt sich die Rails-DSL an, als wäre sie diese spezielle Sprache zur Beschreibung von Anforderungen, obwohl es sich in Wirklichkeit nur um eine intelligente Benennung und die inhärente Verwendung von Rubys hervorragender Syntax handelt.
Gemeinschaft
Rails hat eine Armee von Committern, die dafür sorgen, dass es in einem Top-Zustand bleibt. Viele Projekte brodeln mit der Zeit, doch bei Rails fliegen immer noch die Funken, wenn Entscheidungen getroffen werden müssen. Es fühlt sich an, als ob sich die Betreuer (immer noch) wirklich darum kümmern und möchten, dass die Leute Ruby on Rails verwenden und seine Vorteile verstehen.
Unter Rails selbst, als Sahnehäubchen, steht Ruby mit seinem beeindruckenden Paketmanager RubyGems, der in Bezug auf die Anzahl der Pakete mit CPAN vergleichbar ist – und angesichts des Alters von CPAN ist diese Behauptung (um es milde auszudrücken) sehr beeindruckend. Rails hatte eine kurze Entgleisung, als es versuchte, eigene „Rails-Plugins“ zu erstellen. Glücklicherweise blieb dies nicht bestehen, sodass RubyGems die einheitliche, hervorragende Quelle für Code bleibt, der von sehr intelligenten Personen programmiert wurde.
Die Synergie zwischen einer coolen Sprache, einem pragmatischen Web-Framework und einer hervorragenden Community verleiht Rails ein viel besseres Ergebnis als die Summe seiner Teile.
Die Reife
Rails war um den Block herum. Auf Hipster-Art ist es nicht einmal mehr so cool. Das ist eine gute Sache, wenn es um die Auswahl eines Technologie-Stacks geht: Sie wollen etwas Bewährtes. Und Rails ist genau das. Wir haben kürzlich einen Artikel geschrieben, in dem wir über die große Vielfalt der Ruby-Interpreter und -Runtimes sprechen, die jetzt verfügbar sind.
Marketing
Ich weiß, ich weiß. Als IT-Profi sollte ich wirklich Wert auf „ernste“ Dinge legen und den „Glitzer“ ignorieren. Es mag oberflächlich erscheinen, aber seien wir ehrlich:
- Im Vergleich zur Konkurrenz sieht die Rails-Seite gut aus.
- Rails' erste Leinwandbesetzung war damals einfach atemberaubend. Es sieht heute vielleicht nicht so beeindruckend aus, aber denken Sie daran, dass der einzige Grund, warum wir alle über Java Bescheid wissen, darin besteht, dass alle so begeistert von der Möglichkeit waren, ein Java-Applet im Browser auszuführen. Dies stellte sich als nicht so wichtig heraus, aber dennoch brachte dies Java auf den Radar. In ähnlicher Weise war dieser 15-minütige Blog-Engine-Screencast ein großer Erfolg, der viele Menschen begeisterte.
Dabei geht es nicht einmal um Eitelkeit; Es geht darum, so viele schlaue Leute wie möglich dazu zu bringen, Wasser in die Mühle zu füllen. Wenn es um Frameworks geht, ist der beste Platz in der Menge. Die Wahl eines Frameworks, auf das sich diese klugen Leute konzentrieren, bedeutet einfach, dass Sie bereits viel mehr Boden abgedeckt haben. Und das bringt mich zu meinem nächsten Punkt.
Das Rad (nicht) neu erfinden
Ich habe ein Faible für winzige Frameworks. Ich mag es, wenn ich verstehen kann, was ein bestimmtes Framework tut und warum. In diesem Sinne ist Rails etwas aufgebläht und manchmal sogar überwältigend.
Das Dilemma hier: Wie oft willst du das gleiche Zeug immer und immer wieder schreiben? Einiges davon kann besser umgeschrieben werden, da bin ich mir sicher, aber es braucht Zeit – viel Zeit. Je mehr Sie Rails erlauben, für Sie zu arbeiten, desto weniger müssen Sie sich Gedanken über das Neuschreiben oder Neuimplementieren Ihrer Funktionalität machen.
Rails ist (wie sie sagen) „Batterien inklusive“. Dies ist keine gute Sache, wenn Sie Sparsamkeit mögen oder wenn Sie das Bedürfnis haben, umfassende Kenntnisse darüber zu haben, wie alles funktioniert. In der Praxis scheint es zu funktionieren, wenn Sie Ihre Ängste loslassen. Rails hat vernünftige Standardeinstellungen für fast alles, was Sie brauchen, und ist modular genug, um Sie nicht in eine Enge zu treiben.
Fazit
Fragen Sie sich noch einmal, warum Ruby on Rails verwenden? Rails eignet sich sowohl für hochmoderne öffentliche Websites, die mit Single-Page-JavaScript-Anwendungen konkurrieren, als auch für komplexe Kernsystemanwendungen von Unternehmen, die normalerweise etwas „hässlicher“ aussehen (mit einer allgemeineren Benutzeroberfläche mit geringerer Wiedergabetreue), dies aber ausgleichen Makel mit einer Menge komplizierter Geschäftsregeln und Logik. Sein Vorteil ist, dass es vielseitig ist und sowohl mit den Schlanken als auch mit den Mächtigen konkurrieren kann.
Für die meisten gängigen Probleme hat Rails eine fast sofort einsatzbereite Komponente mit Dokumentation, die durchweg überdurchschnittlich ist (irgendwie hat das Rails-Kernteam die Mitwirkenden davon überzeugt, dass das Schreiben von Dokumentation cool ist (obwohl wir alle wissen, dass es cool ist). nicht), was zu gut geschriebenen, prägnanten und zeitsparenden Dokumenten führt).
Wenn Sie Einhörner und Freitagsumarmungen beiseite legen, erhalten Sie am Ende ein mächtiges Framework, das Sie sowohl für Ihren zukünftigen Game Changer als auch für Ihre nächste Business-Site in der Mitte der Straße verwenden können. Und mit Ihrem Pool an erstklassigen Edelsteinen haben Sie ein Arsenal zur Hand, das einige der brillantesten Ideen der Computerprogrammierung umsetzt. Ohne viel Aufhebens.