Von Rails zu Laravel – ein Erfahrungsbericht

Vor einigen Jahren habe ich das Web-Framework Ruby on Rails (kurz Rails) entdeckt. Das Framework hat viel frischen Wind in das Thema der Web-Frameworks gebraucht. Mit kaum einem Framework konnte man so schnell und effizient Web-Applikationen entwickeln wie mit Rails.

Ich wühlte mich durch Bücher, Tutorials, Videos (sehr zu empfehlen: Railscasts). Rails fand ich einfach genial. Es gilt: convention over configuration. Das bedeutet so viel wie: Rails schreibt dir vor, wo und wie du etwas machst, dafür entfällt weitestgehend die Konfiguration des Frameworks. Aber: Passen einem die vorgegebenen Konventionen nicht, dann kann man diese nahezu durchgehend an die eigenen Bedürfnisse anpassen, der Aufwand steigt dadurch jedoch.

Jetzt kommen wir zum großen ABER. Das Framework ist genial, schnell, einfach und flexibel, ABER es ist relativ schwierig zum Fliegen zu bewegen. Die lokale Entwicklungsumgebung auf dem heimischen Rechner fertig bereitzustellen ist aufwändig und erfordert einiges an technischem Know-How. Nicht zu vergleichen mit einer MAMP-, WAMP- oder LAMP-Umgebung, die zur Entwicklung mit PHP benötigt wird.

Auch das Hosting gestaltet sich weitaus schwieriger. Abgesehen von out-of-the-box-Anbietern wie heroku, die die Inbetriebnahme von Rails-Applikationen relativ einfach gestalten, ist das Go-Live einer Rails-Applikation grundsätzlich deutlich schwieriger als bei einer vergleichbaren PHP-Anwendung.

Hoster wie heroku sind, so lange es das Hosting von Test- und Entwicklungsversionen geht, relativ kostengünstig oder gar kostenlos. Sobald die Applikation jedoch produktiv geht und dadurch eine „richtige“ Datenbank benötigt, Mails versenden möchte oder schlichtweg mehr Performance benötigt, wird es schnell sehr teuer.

Um es kurz zu machen: Ruby als Sprache und Rails als Framework sind eine geniale Kombination, die einfach Spaß macht. Allerdings wird insbesondere zu Beginn viel technisches Verständnis erfordert, um die lokale Entwicklungsumgebung überhaupt so weit zu bekommen, dass losentwickelt werden kann.

Aus diesem Grund machte ich mich auf die Suche nach Alternativen. Ich komme aus der PHP-Ecke, nutze seit bald 15 Jahren diverse Content Management Systeme, die auf PHP basieren. Bei der Recherche stieß ich beispielsweise auf Symfony 2, einem der Schwergewichte im Bereich der PHP-Web-Frameworks. Mit dem Wissen um Rails im Hinterkopf kam mir Symfony 2 aber relativ „störrisch“ und wenig intuitiv vor. Also ging die Suche weiter. Nach mehreren weiteren Zwischenstopps bin ich irgendwann bei Laravel 4 gelandet. Laravel macht von Beginn an ähnlich viel Spaß wie Rails, allerdings sind die Hürden beim Einstieg deutlich geringer.

Mit Hilfe von composer kann Laravel installiert werden, zusätzliche Pakete hinzugefügt oder aktualisiert werden. Composer fühlt sich ähnlich wie Bundler an, mit dem ähnliche Ziele bei Rails verfolgt werden.

Laravel bietet wie Rails Migrationen, um Datenbankanpassungen, die von mehreren Entwicklern parallel durchgeführt werden, abzugleichen. PHP wirkt oftmals etwas angestaubt von der Sprachsyntax her, Laravel bringt hier frischen Wind rein. Datenbankabfragen lassen die Ähnlichkeit zu Rails erkennen, insgesamt fühlt man sich bei Laravel von Beginn an Wohl, wenn man vorab Erfahrung mit Rails sammeln konnte.

Zukünftig werde ich vermehrt auf Laravel setzen, das hat inbesondere folgende Gründe:

  • Einfacheres, kostengünstigeres Hosting mit mehr anbietern
  • Mehr Nachfrage von Kunden nach PHP-Lösungen als nach Ruby-Lösungen
  • Bereitstellung der lokalen Entwicklungsumgebung deutlich einfacher als bei Rails
  • Sehr gute Dokumentation (ok, diese ist bei Rails auch wirklich gut)

Zusammengefasst gesagt ist Rails nicht schlecht. Genauer gesagt gefällt es mir sogar noch besser als Laravel. ABER: Was hilft ein noch so tolles Framework, das auf einer genialen Sprache basiert, wenn die Nachfrage danach leider relativ klein ist? Rails fühlt sich, unter dem Strich, etwas erwachsener an. Einige Stellen, die bei Laravel noch etwas unfertig wirken, sind bei Rails bis zum Ende durchdacht. Ein Beispiels dafür sind Links, die einen DELETE-Request auslösen sollen. Bei Rails wird hier das benötigte JavaScript direkt mitgeliefert, alles was benötigt wird ist ein zusätzlicher Parameter. Bei Laravel muss man hier auf ein Formular zurückgreifen, oder aber den benötigten JavaScript-Code selbst bereit stellen.

Schreibe einen Kommentar