Wie gut Ruby on Rails ist und wie es die Entwicklung beschleunigt



    Dieser Beitrag ist eine Übersetzung des Artikels des Programmierers Krzysztof Kopidlovski, der sich mit der Analyse der Vorteile von Ruby on Rails befasst. Das Material wird vor allem für Programmieranfänger und erst dann für Profis interessant sein.

    Ruby on Rails hilft Ihnen dabei, die Zeit zu sparen, die Sie normalerweise für die Entwicklung aufwenden. Nur weil bei Verwendung dieses Frameworks der Code weniger wird und die Funktionalität gleich bleibt.

    Skillbox empfiehlt: Praktikum „Web - Entwickler Beruf“ .

    Wir erinnern: für alle Leser von "Habr" - einen Rabatt von 10.000 Rubel beim Schreiben in einen beliebigen Skillbox-Kurs auf den Aktionscode "Habr".

    Java zu Ruby


    Für mich ist die Arbeit mit Ruby eine echte Zeitersparnis. Ich kann mich auf Methoden und Logik konzentrieren und kann nicht Zeile für Zeile mit viel Code herumspielen. Früher dachte ich, Java sei ein Game-Changer, aber nachdem ich Ruby on Rails kennengelernt hatte, war ich noch beeindruckter.

    Ungefähr ein Jahr schreibe ich in Java und entwickle Backends. Mir scheint, jeder Programmierer, der mit dieser Sprache arbeitet, wird verstehen, wovon ich spreche. Angenommen, Sie möchten einen Endpunkt schreiben, um eine ZIP-Datei zurückzugeben. Sie können dieses Problem problemlos lösen, dies erfordert jedoch Hunderte von Codezeilen.

    Aber was ist, wenn ich Ihnen sage, dass Sie mit ein paar Dutzend Zeilen auskommen können?



    Dies ist Ruby - eine objektorientierte, dynamische, reflektierende, interpretierbare Programmiersprache auf hohem Niveau. Es verfügt über eine betriebssystemunabhängige Multithreading-Implementierung, starke dynamische Typisierung, Garbage Collector und viele andere Funktionen. Es sind viele Webanwendungen darauf geschrieben, einschließlich GitHub und Twitter.

    Ruby reduziert den Code


    Wahrscheinlich fragen Sie sich, wie es im Allgemeinen möglich ist, die Codemenge auf mehrere Dutzend Zeilen zu reduzieren, während die oben erwähnte Logik beibehalten wird. Es ist wirklich möglich und wir sprechen noch nicht über Frameworks, es geht um reine Sprache.

    Wenn Sie beispielsweise ein Array haben und alle Elemente um 2 erhöhen und dann in Java in umgekehrter Reihenfolge zurückgeben möchten, sieht der Code folgendermaßen aus (über die List-Schnittstelle):

    import java.util.*;
    import java.util.stream.Stream;
    importstatic java.util.Collections.reverseOrder;
    importstatic java.util.stream.Collectors.toList;
    publicclassMyClass{
        publicstaticvoidmain(String args[]){
            List<Integer> list = Stream.of(1, 2, 3)
              .map(val -> val + 2)
              .sorted(reverseOrder())
              .collect(toList());
            list.forEach(System.out::println);
        }
    }

    Dasselbe würde auf Ruby so aussehen:

    array = Array.new (5.2)
    array.map {| x | x + 2} .reverse


    Der Unterschied ist offensichtlich. Und Sie müssen keine Klassen importieren.

    Dynamische Eingabe


    Nachdem wir sichergestellt haben, dass es nicht wirklich zu viele Codezeilen gibt, können wir darüber nachdenken, dass im obigen Beispiel der Typ der Variablen nicht festgelegt ist. Dies ist wahr - Tatsache ist, dass in Ruby alle Variablen dynamisch typisiert werden.

    Wenn Sie eine Methode schreiben, die zwei Parameter akzeptiert, müssen Sie deren Typ nicht angeben, sondern können sich einfach auf die Logik konzentrieren. Ergebnis: weniger Code, besser und sauberer.

    Ruby hat auch viele proprietäre Methoden, die das Codieren beschleunigen. Beim Schreiben von Programmen verwende ich am häufigsten die Umwandlung von Hash in Array und dann JSON. In Ruby kann ich es in nur einer Zeile tun!

    Auf Schienen


    Das beliebteste Framework für Ruby ist Rails. Es bietet ungefähr die gleiche Sprachfunktionalität wie Spring for Java. Ich möchte einige meiner Erkenntnisse mitteilen, die für Sie nützlich sein könnten.

    Alle Endpunkte an einem Ort

    Eines der Dinge, die ich an Rails mag, ist, dass ich nur eine Datei benötige, um alle meine Endpunkte zu deklarieren. Ich kann sie immer mit dem Terminalbefehl $ rake routes anzeigen. Dies ist eine großartige Option für große Projekte, wenn Sie etwas tun müssen, das auf dem bereits Geschriebenen basiert.

    Darüber hinaus können Sie Ihre Endpunkte in Gruppen unterteilen. Wenn Sie beispielsweise über ein Benutzermodell verfügen, können Sie Pfade für alle Mitglieder festlegen, sodass jeder Endpunkt automatisch eine eigene ID erhält.

    Sie müssen nicht unterschiedliche Parameter für dieselben Endpunkte verwenden. In Rails können Sie standardmäßig alle Parameter an den Endpunkt übergeben und nur diejenigen validieren, die Sie im Controller verwenden möchten.

    user_params def
    params.require (: user) .permit (: Name ,: Nachnamen ,: birth_date ,: avatar Registriert am :)
    Ende


    der Rails - Datenbank

    Alle Migration ist in der Anwendung registriert, so ist die Datenbank - Konfiguration für alle Geräte mit einem einzigen Befehl zu implementieren: $ Bundle Rechen db: Setup. Somit wird ein externer Client zum Einrichten oder Verwenden der Datenbank einfach nicht benötigt.

    Und nein, die Datenbank, die Sie erstellt und auf ein anderes Gerät übertragen haben, ist nicht leer: In Ihrer Rails-Anwendung gibt es eine Datei namens seeds.rb, in der Sie alle Einträge für verschiedene Modelle angeben können, die für das Funktionieren der Anwendung erforderlich sind. Infolgedessen benötigt das Modell nur wenige Codezeilen.

    Der Befehl $ bundle rake db: setup führt drei Funktionen aus:

    • Erstellt eine Datenbank, falls diese noch nicht vorhanden ist.
    • Führt alle Migrationen aus.
    • Protokolliert alle Rohdaten aus Ihrer Seed-Datei.

    Der Code ist wirklich sauber: ActiveRecords zeichnet einfach die Methoden auf, die Sie implementieren müssen, nicht die Attribute.

    Im Hibernate-Framework für Java müssen Sie alle Attribute mit Anmerkungen vorschreiben und dann auch die Attribute festlegen, die Sie ändern müssen. In diesem Fall erhalten Sie am Ausgang eine große Menge Code.

    In Rails nimmt dasselbe eine Zeile. Das DB-Schema wird in der Datei schema.rb gespeichert, die beim Start der Migration automatisch erstellt wird. Und die Klasse benötigt keine Setter oder Attribute. Wenn letztere benötigt werden, genügt es zu schreiben: Model.attribute - und das ist alles.

    Wie oben erwähnt, können Sie sich bei Rails speziell auf die Logik und Methoden Ihres Projekts konzentrieren und nicht auf den Code.



    Fazit


    Ruby on Rails bietet Ihnen leistungsstarke Tools wie dynamisches Tippen oder By-Bugging, die den Programmierprozess erheblich beschleunigen.

    Wenn Sie an einem Kurs zur Entwicklung von Webanwendungen teilnehmen möchten, sollten Sie versuchen, eine kleine Rails-Anwendung zu schreiben, um zu verstehen, wie sie funktioniert. Es ist nie zu spät, etwas Neues zu lernen - auch wenn Sie traditionelle Werkzeuge bevorzugen.


    Jetzt auch beliebt: