Kann eine integrierte Entwicklungsumgebung für Ruby on Rails dem schlanken Standardwerkzeug Textmate das Wasser reichen? Yes, she can: Die initiale Version 1.0 von Rubymine vereinfacht die Entwicklung von Rails-Anwendungen, indem sie ohne Überfrachtung nützliche Tools integriert.
Der große Anklang, den Ruby on Rails seit rund fünf Jahren in der Webentwickler-Gemeinde findet, gründet nicht nur in den zentralen Konzepten des DRY (Don\’t repeat yourself) und CoC (Convention over Configuration), sondern auch in einer neuen Art des Programmierens. Der Rails-Erfinder David Heinemeier Hansson aus Dänemark will nicht weniger, als die Programmierung von Webanwendungen revolutionieren. Dafür befreit er Webentwickler von überfrachteten Frameworks, die sich erst nach aufwändiger XML-Konfiguration nutzen lassen und viel Speicher verlangen.
Hansson straft die hochgerüsteten IDEs von Sun Microsystems und der Eclipse Foundation mit Nichtbeachtung und hebt den Texteditor Textmate auf den Thron der Rails-Entwicklung [1]. Die Zahl der Ruby-on-Rails-Enthusiasten wuchs im Laufe der Zeit durch Konvertiten anderer Programmiersprachen und -plattformen. Das erzeugte Druck auf die IDE-Lieferanten. So verbündet sich etwa Netbeans seit Version 6.0 auf Wunsch mit Ruby und dem Ruby-Interpreter Jruby [2].
Die Softwarefirma Jetbrains aus Prag springt auf den Ruby-Zug auf. Ende 2008 machten die Tschechen ein Plugin für die hauseigene Java-IDE Intellij Idea zu dem eigenständigen Programm Rubymine. Im April 2009 erblickte die Initialversion 1.0 das Licht der Entwicklerwelt.
Verschlossener Kohlekumpel
Die hier getestete Version 1.0.5 von Mai 2009 (Build 9007) steht unter [3] zur Evaluierung bereit. Ihr Lizenzschlüssel verliert nach 30 Tagen seine Gültigkeit. Die IDE Rubymine ist nicht quelloffen und unterliegt dualer Lizenzierung: Eine Art Open-Source- und eine 85 Euro teure Commercial-Lizenz stehen nebeneinander. Die Open-Source-Lizenz berechtigt zur Entwicklung nicht-kommerzieller, quelloffener Anwendungen, soll den gleichen Funktionsumfang haben und nichts kosten [4]. Jetbrains stellt allerdings eine Reihe Fragen, bevor ein GPL-Entwickler die IDE nutzen darf. Neben dem Projektnamen und der zugehörigen URL ist zum Beispiel ein öffentlicher Zugang zum Quellcode-Repository anzugeben.
Nach dem Auspacken des Tar-Archivs startet das Programm mit Hilfe des Installationsskripts »rubymin.sh« im Bin-Ordner (Abbildung 1). Damit es nicht ins Stolpern kommt, sollte die Umgebungsvariable »JDK_HOME« passen:
export JDK_HOME=/usr/lib/jvm/java-6-sun
Neben Ruby, Rails und MySQL benötigt Rubymine noch ein JDK 6. Beim Test kam ein Ubuntu-9.04-Desktop zum Einsatz.

Abbildung 1: Die Rails-Entwicklungsumgebung Rubymine begrüßt den Entwickler nach dem Start aufgeräumt und wünscht ihm Freude bei der Arbeit (Schriftzug rechts oben).
Schachtplan
Aufgebaut ist Rubymine wie eine klassische integrierte Entwicklungsumgebung, die das Fenster in Projekt-, Datei- und Status-Ansicht unterteilt. Alle Fenster sind eingerastet (Docked Mode), lassen sich aber in Größe und Position verändern. Unterschiedliche Layouts passen die IDE an verschiedene Arbeitsumgebungen und Bildschirmgrößen an.
Auf Entdeckungstour der IDE-Funktionen checkt der Entwickler zum Beispiel ein größeres Projekt aus einem lokalen Git-Repository aus. Um Git innerhalb der IDE zu nutzen, muss in »File | Settings« der Pfad zum Git-Binary stehen. Rubymine verschmäht aber Git 1.5.6. Im Test gelang erst mit der Version 1.6.3.1 die Anbindung. Beim Öffnen des Projekts analysiert Rubymine dessen Struktur und stellt mehrere Ansichten zur Wahl. Die Rails-Ansicht bietet beispielsweise eine strukturierte Perspektive auf die einzelnen Komponenten und löst sich damit von der Verzeichnisstruktur. Wer das nicht will, schaltet auf die verzeichnisorientierte Sichtweise zurück.
Während der Entwickler durch den Rails-Code navigiert, merkt Rubymine, ob er sich im Controller oder im View aufhält. Passend angebotene Navigationsmöglichkeiten sind mit wenigen Shortcuts erreichbar, zum Beispiel »Goto Line«, »Goto File« oder »Goto Class«.
Kompass, Karte, Erste Hilfe
Das Programm bringt eine DIN-A4-Übersicht aller Shortkeys zum Aufrufen und Ausdrucken mit. So lässt sich bequem zwischen Klassen, Dateien und Funktionen navigieren. Der Editor verfügt neben Code-Faltung und Verlinkung verbundener Klassen – etwa bei den Relationen »:has_many« oder »:belongs_to« – über Syntax-Highlighting und komplettiert Programmtext.
Die Code-Completion bezieht sich nicht nur auf den Ruby-Quellcode der Model-, View- und Controller-Klassen, sondern erstreckt sich auch auf Konfigurationsdateien wie »routes.rb«, HTML-, CSS- und Javascript-Code. Hilfreich ist die On-the-fly-Analyse des Quellcode. Sie findet doppelte Deklarationen oder schlägt Code-Konventionen vor. Außerdem erzeugt die IDE Model-Dependency-Diagramme und zeigt an, in welcher Beziehung die Modellklassen zueinander stehen (Abbildung 2). Ein Doppelklick in dieses Diagramm öffnet ein eigenes Editor-Fenster mit dem Quellcode der ausgewählten Klasse.

Abbildung 2: Rubymine integriert das Versionsmanagementsystem Git (unten). Rechts im Bild präsentiert sich das Model-Dependency-Diagramm.
Kommandozeilen-Tools von Rails sind sauber integriert. Zum Beispiel ermöglicht es eine Tastenkombination, alle Rake-Tasks mittels Autovervollständigung des Namens auszuwählen. Das erspart die leidige Eingabe kompletter Task-Namen. Wie Rubymine Rails-Applikationen ausführt, konfiguriert der Anwender über eine Dialogbox. Hier legt er innerhalb der drei standardmäßigen Rails-Umgebungen Development, Test und Production genau fest, welche Datenbankverbindungen und Webserver-Einstellungen bestehen.
Rubymine verbaut auch die beiden Rails-Tools Test::Unit [5] und Rspec ([6], Abbildung 3). Letzteres verfolgt das so genannte Behaviour Driven Development (BDD): Der Programmierer beschreibt das Code-Verhalten vor der Implementierung in natürlicher Sprache. Die Integration der Tools zeigt sich darin, dass sie direkt aus der Oberfläche von Rubymine heraus zu steuern sind. Zudem erfasst die Rubymine-Textvervollständigung zum Beispiel die Domain Specific Languages von Rspec. Auch erlaubt es die Programmoberfläche, diagnostizierte Fehler gleich im Quellcode zu verfolgen.
Neu ab Version 1.0.5: Rubymine findet Fehler in Anwendungen, die auf entfernten Maschinen laufen [7]. Dafür verbindet sich die IDE über den internen Debugger Rdebug über einen definierten Port mit der entfernten Rails-Anwendung.

Abbildung 3: Rubymine bringt bereits mehrere integrierte Test-Tools mit. Test::Unit zum Beispiel zeigt sowohl Fehler als auch Statistiken.
Schmieröl fehlt
Unterschiede zu den anderen Entwicklungsumgebungen für Ruby, Jruby und Rails sind dennoch eher marginal. Ein Vorteil von Radrails [8] beispielsweise sind die vielen Refaktorierungsmöglichkeiten. Ebenso wie Netbeans verfügt auch Rubymine über die Möglichkeit, Ruby-Gems zu verwalten. Weder Radrails noch Netbeans erstellen dafür Modellklassen-Diagramme. Allerdings können IDEs wie Netbeans nicht verhehlen, dass Ruby nur eine von vielen dynamischen Sprachen ist. Rubymine fokussiert dagegen klar die Entwicklung von Rails-Anwendungen unter Ruby.
Rubymine merkt man jedoch bei der Arbeit den Java-Unterbau an. Zeitweise reagiert die IDE etwas träge auf Eingaben und verschlingt einen großen Teil des kostbaren Speichers. Dafür bekommt der Programmierer allerdings eine weithin ausgereifte Umgebung in die Hand, die den gesamten Rails-Entwicklungsprozess abdeckt.
Zusatzfeatures würden den kleinen Vorsprung vor anderem IDEs ausbauen. Hilfreich wäre zum Beispiel eine SQL-Konsole, um schnell mal eine Abfrage an die benutzte Datenbank abzusetzen. Fehlende Funktionen lassen sich über die vorhandene Plugin-Schnittstelle in Ruby oder Java realisieren.
Erste Schienen sauber verlegt
Die erste Version von Rubymine zeigt sich nützlich und durchdacht. Der Java-Unterbau der neuen Rails-IDE verzögert den Ablauf zwar ein wenig. Als Gegenleistung erhält der Abwender aber plattformübergreifend die gleiche Funktionalität geboten. Version 1.1 soll neben dem BDD-Modul Cucumba [9] auch Rails in der aktuellen Version 2.3 unterstützen, zurzeit verträgt sich Rubymine nur mit Rails 2.2. Ebenfalls steht die SQL-Konsole auf der Feature-Liste für neue Versionen. Im Herbst soll Version 1.5 auch HAML verarbeiten (XHTML Abstraction Markup Language).
Der Hersteller baut also den Stollen noch etwas aus. Nach den bisherigen Ergebnissen darf man gespannt sein. Die DELUG-Ausgabe des Linux-Magazins enthält auf der beiliegenden DVD eine erweiterte Evaluierungsversion von Rubymine, die der interessierte Anwender nicht nur 30, sondern 90 Tage testen kann. Der Lizenzschlüssel liegt anbei. (ake)
|
Infos |
|---|
|
[1] Textmate: [http://macromates.com] [2] Ruby-Interpreter Jruby:[http://jruby.codehaus.org] [3] Download der 30-Tage-Testversion von Rubymine:[http://www.jetbrains.com/ruby/download] [4] Bedingungen der kostenfreien Open-Source-Lizenz:[http://www.jetbrains.com/ruby/buy/buy.jsp#opensource_howToApply] [5] Test::Unit:[http://rubyforge.org/projects/test-unit] [6] Rspec:[http://rubyforge.org/projects/rspec] [7] Remote-Debugging: [http://blogs.jetbrains.com/ruby/2009/05/ruby-remote-debug] [8] Radrails: [http://www.aptana.com/rails] [9] Cucumba: [http://cukes.info] |
|
Der Autor |
|---|
|
Ramon Wartala ist Head of Technology bei dem Hamburger Online-Vermarkter Ströer Interactive. Er betreibt den in Ruby on Rails entwickelten News-Aggregator Co2alarm.com mit seiner Firma Hartung & Wartala und ist Co-Autor des 2007 bei Addison-Wesley erschienenen Buches “Webanwendungen mit Ruby on Rails”. |





