Ruby 2.0 als Geschenk zum 20. Geburtstag

Seite 3: Fazit

Inhaltsverzeichnis

Einige kleinere, aber nicht unwesentlichere, neue Features, seien am Schluss kurz und kompakt vorgestellt.

  • Module#prepend: Laut Core-Developer Yusuke Endoh wird Module#prepend wahrscheinlich eines der zumeist unbewusst genutzten Features werden. Es ersetzt die alias_method_chain in Rails mit einem eindeutigeren Mechanismus unter der Verwendung von Modulen. Derzeit werden Module mit der Anweisung include in einer Klasse benutzt und stellen ihre Methoden zur VerfĂĽgung. Methoden der Klasse dĂĽrfen Modulmethoden einfach ĂĽberschreiben, sofern diese per super erreichbar sind. Umgekehrt ist das im Moment noch nicht möglich. An der Stelle kommt die Anweisung prepend ins Spiel. Werden Module ĂĽber diese Module einer Klasse vorangestellt, ĂĽberschreiben die Methoden des Moduls die der Klasse, sofern die Klassenmethoden per super erreichbar sind.
  • RubyGems 2.0: Zusammen mit dem neuen Ruby wird RubyGems 2.0 ausgeliefert, das einige Verbesserungen des Ruby-Paketsystems mitbringt. Besonders erwähnenswert ist die UnterstĂĽtzung sogenannter gemdeps-Dateien. Sie enthalten Informationen darĂĽber, welche Gems mit welcher Version fĂĽr das AusfĂĽhren der Anwendung benötigt werden. Der Funktionsumfang ist zwar noch nicht ganz Bundler-konform, bietet aber trotzdem eine einfache Benutzung dieser Dateien. Beispielsweise kann ein gem install aus dieser Datei die benötigten Gems installieren.
  • Onigmo als Engine fĂĽr reguläre AusdrĂĽcke: Bereits mit Ruby 1.9. wurde Onigmo als Engine fĂĽr reguläre AusdrĂĽcke eingefĂĽhrt, mit Ruby 2.0 ist sie nun die erste Wahl. Onigmo ist ein Fork von Oniguruma, einer an Perl-Syntax angelehnten RegEx-Bibliothek. In die aktuelle Version von Onigmo sind unter anderem Fixes von Ruby 1.9.3 und Perl 5.10+ eingeflossen. Diese Engine verspricht einige Neuerungen, zum Beispiel bedingte Auswertungen und Nutzung von RĂĽckverweisen. Gabriele Renzi fasst in seinem Blog die Features von Onigmo in Ruby gut zusammen und präsentiert auch einige Beispiele.

Im Moment gibt es eine überschaubare Anzahl an Inkompatibilitäten:

  • Die Standard-Zeichenkodierung fĂĽr Ruby-Programme wurde von US-ASCII auf UTF-8 geändert. Es gab bereits in der Testphase mit den Release-Kandidaten Meldungen ĂĽber ein schlechteres Verhalten der Programme.
  • Die iconv-Bibliothek (Konvertierung von einem Encoding in ein anderes) wurde entfernt. Die Entwickler hatten sie bereits in Ruby 1.9 mit der EinfĂĽhrung von M17N ("multilingualization") als "deprecated" markiert. Als Empfehlung gilt hier: "Use String#encode, etc. instead".
  • ABI-BrĂĽche: Normalerweise sollte sich das mit der Neuinstallation von Extensions beheben lassen.

Das Upgrade auf Ruby 2.0 für bestehende Programme sollte ohne größere Probleme möglich sein, zumindest laut Yusuke Endoh. Es wurde Wert darauf gelegt, dass das neue Ruby nahezu komplett kompatibel zu Ruby 1.9 ist. Da zudem die Gesamtperformance in Ruby 2.0 verbessert wurde, ist ein Upgrade lohnenswert. Der Wunsch des Core-Teams ist es, dass Ruby 1.9.3 so schnell wie möglich abgelöst werden kann.

Zum Schluss bleibt noch die Frage offen, wie das populäre Webframework Ruby on Rails mit einer neuen Ruby-Version umgeht? Wenig überraschend ist die Antwort, dass die zukünftige Version von Ruby on Rails (4.0), die mindestens Ruby 1.9.3 verlangt, den Einsatz von Ruby 2.0 empfiehlt.

Tim Keller
arbeitet als Senior Consultant bei der innoQ Deutschland GmbH.

Christian Albrecht (@coastalchief)
arbeitet als Principal Consultant bei der innoQ Deutschland GmbH. Ruby und Ruby on Rails sind seine bevorzugten Waffen, wenn es um die Realisierung von Webanwendungen geht.
(ane)