Blog

Ruby 1.9 und Ruby Kafi

Von Pascal Zumkehr, publiziert am 01. März 2012
Tags: Kafi, Rails, Ruby

Die Zeit ist reif für Ruby 1.9! Pascal Zumkehr erklärt die Hintergründe dazu und beschreibt die Neuerungen des Releases. Zudem kündigt er ein neues Format im Puzzle Kosmos an: das Ruby Kafi.

Vor gut einem Monat erschien Ruby on Rails 3.2, die letzte Rails Version, welche noch mit Ruby 1.8 kompatibel ist. Ab Version 4.0, die sich nun in Entwicklung befindet, wird nur noch Ruby 1.9.3 und höher unterstützt. Höchste Zeit also, sich für den Umstieg bereit zu machen.

Die Welt dreht sich

Ruby 1.9.0 wurde bereits Ende 2007 veröffentlicht. Seither sind unzählige Patches in die Entwicklung eingeflossen, welche letzten Oktober die aktuelle Version 1.9.3 hervorbrachte. Dennoch ist die Version 1.8.7 noch weit verbreitet. Mit der strategischen Entscheidung des Rails Core Teams neigt sich nun diese Ära definitiv dem Ende zu. Die Zeit ist reif für Ruby 1.9.

Was gibt’s denn Neues?

Die neue Major Version beinhaltet Änderungen an der Sprache, den Standardbibliotheken sowie am Interpreter.

Yet another Ruby VM

Die wohl grösste Änderung fand beim Interpreter der Referenzimplementation statt. Dieser wurde komplett neu geschrieben und lässt Ruby Programme um einiges schneller laufen. Ausserdem werden Ruby Threads nun 1:1 auf System Threads abgebildet, eine zentrale Eigenschaft für das angebrochene Multicore Zeitalter. Durch die Verbesserungen der neuen Virtuellen Maschine erübrigt sich auch die alternative Ruby Enterprise Edition. Selbstverständlich unterstützt der auf der Java VM basierende JRuby Interpreter 1.9 ebenfalls, allerdings erst in der Version 1.9.2. Gemeinsam ist nun allen Interpretern die neu erarbeitete Spezifikation der Sprache, welche als grundlegende Referenz gilt.

Show me the Code

Auch bei der Syntax hat sich einiges getan. Neu lassen sich Blöcke mit -> definieren, wenn diese als Variablen oder Argumente verwendet werden sollen:

block = ->(a,b) { puts [a,b] }

Bei den Methodenargumenten ist die Handhabung noch flexibler geworden. Defaultargumente sowie Splats (in einen Array zusammengefasste Argumente), lassen sich nun an einer beliebigen Position definieren, nicht nur am Ende:

def my_method(a = 'default', *b, c)

Diese Änderung wird vor allem beim Entwurf von DSLs nützlich sein. Blöcke können neu ebenfalls Defaultargumente verwenden. Die letzte grosse Syntaxänderung betrifft die Hash Literale. Diese werden in Ruby oft als benannte Argumentlisten verwendet. Falls als Keys Symbole verwendet werden, können Hash Literale jetzt in einer Javascript ähnlichen Form geschrieben werden:

{name: 'Pascal', city: 'Bern', age: 31}

Die alte Hashrocket Syntax wird für Keys anderer Typen jedoch weiterhin erhalten bleiben.

Bibliotheken

Selbstverständlich erfuhren auch die Standardbibliotheken eine Vielzahl an Erweiterungen. Die neue Enumerator Klasse, geordnete Hashes sowie das neu im Core aufgenommene Packetverwaltungswerkzeug Rubygems sollen hier nur als Appetitanreger dienen. Wichtig im Zusammenhang mit mehrsprachigen Applikationen ist die Unterstützung für verschiedene String Encodings. Während früher Strings als reine Byte Arrays abgespeichert wurden (1.8.7> “äöü”.size # => 7), werden von Ruby 1.9 verschiedenste Encodings unterstützt. Dazu wurden auch die Methoden der Klasse String angepasst (1.9.3> “äöü”.size # => 3).

Auf zu neuen Ufern

Ruby 1.9 ist seit einiger Zeit bereit für den produktiven Einsatz. Die am häufigsten verwendeten Drittbibliotheken und Plugins sind mit der neuen Version ebenfalls kompatibel. Für neue Applikationen empfehlen wir auf jeden Fall, auf Ruby 1.9 zu setzen. Falls Sie beim Umstieg Hilfe benötigen, unterstützen wir Sie gerne sowohl auf Entwicklungs- wie auch auf Betriebsebene.

Ruby Kafi

In einem kleineren Rahmen haben wir bisher bei Puzzle unser Rubywissen geteilt, gefestigt und erweitert. Das “Ruby Kafi” öffnen wir nun auch für externe Ruby Entwickler. Jeden ersten Dienstag im Monat treffen wir uns um 13:15 Uhr am Eigerplatz 4. Wir präsentieren dabei Ruby Tricks, Rails Plugins oder gemeisterte Schwierigkeiten mit anschliessender Diskussion. Eingeladen sind primär erfahrene Ruby Programmierer. Das nächste Kafi vom 6.3.2012 behandelt das Application Error Handling Tool Errbit. Wer Interesse hat, kann sich mit Pascal Zumkehr in Verbindung setzen.

Für alle, die Ruby on Rails gerne kennenlernen würden, führen wir Ende April eine zweitägige Schulung durch. Weitere Informationen finden Sie in Kürze in diesem Blog.


Kommentar schreiben

Puzzle ITC GmbH
Eigerplatz 4
CH-3007 Bern

Tel. +41 31 370 22 00
Fax +41 31 370 22 01

Puzzle Stein