Programmieren mit Ruby unter OS X

OS X Tiger enthält bereits eine vorinstallierte Version von Ruby. Auch wenn diese nicht aktuell ist (mitgeliefert wird 1.8.2, aktuell ist 1.8.4), sollte sie für erste Schritte ausreichen. Momentan grassiert der Ruby on Rails Hype im Internet, also war es auch für mich an der Zeit, meine ersten Schritte damit zu machen. Wie immer sollte das nicht so einfach sein…

Als erstes braucht man für den Einstieg gute Literatur. „Agile Web Development with Rails“ und „Programming Ruby — A Pragmatic Programmers‘ Approach“ sind dafür gut geeignet. Beide Bücher stammen aus der Feder der Autoren von „The Pragmatic Programmer“. Die Installation von Ruby selbst ist nicht dramatisch. Entweder kompiliert man es selbst oder verwendet das bei DarwinPorts verfügbare Paket.

Als verwöhnter Java-Entwickler benötigt man natürlich noch die passende Entwicklungsumgebung mit Debugger. Ich will hier nicht auf die verschiedenen Editoren eingehen, die es für OS X gibt, sondern auf meine Schwierigkeiten, einen passenden Debugger zu finden.

Die Kandidaten sind:

  1. ruby -r debug
  2. RDT
  3. FreeRide
  4. Mr. Guid
  5. ArachnoRuby

ruby -r debug
Funktioniert problemlos. Man muß allerdings beliebig viel Zeit mitbrigen, da man nur über die Kommandozeile arbeiten kann. Mit etwas Übung (und Leidensfähigkeit) kann man damit sicherlich arbeiten, mit einem Debugger, wie er z.B. in IntelliJ IDEA oder Eclipse eingebaut ist, kann man das natürlich nicht vergleichen. Als einziger Debugger hat der Debug-Modus übrigens meinen Test bestanden*.

RDT
Das Ruby Plugin für Eclipse ist einfach zu installieren. Danach kann man bequem auf die API-Dokumentation zugreifen und hat Syntax-Highlighting im Editor. Code-Vervollständigung ist nicht verfügbar. Man kann mit dem RDT Ruby Programme debuggen. Mit dem bei OS X mitgelieferten Ruby kann man beim Debuggen keine Meldungen auf die Konsole ausgeben und man kurioserweise nicht alle lokalen Variablen im Debugger. Mit einem aktuellen Ruby 1.8.4 erhalte ich nur:

ruby 1.8.4 debugger listens on port 55792
/Users/dittert/Documents/workspace/FileManager/Test.rb:4: [BUG] Segmentation fault
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.5.0]

Damit scheidet RDT aus…

FreeRide
FreeRide ist eine komplett in Ruby geschriebene IDE (bis auf ein paar native externe Bibliotheken). Die Screenshots auf der Homepage sehen auch vielversprechend aus. Für die Installation unter OS X benötigt man DarwinPorts. Darüber erhält man allerdings nur die fast ein Jahr alte Version 0.9.2 (aktuell ist 0.9.5). Dennoch habe ich all diese Hürden auf meiner Suche nach einem Debugger auf mich genommen. Ergebnis (nach einer halben Ewigkeit):

glibtool –tag=CXX –mode=link g++ -W -Wall -DFOX -g -O2 -o libfxscintilla.la -rpath /opt/local/lib -version-info 16:0:0 libfxscintilla_la-PlatFOX.lo libfxscintilla_la-ScintillaFOX.lo ../scintilla/src/libscintilla.la
g++ -dynamiclib -single_module -undefined dynamic_lookup -o .libs/libfxscintilla.16.dylib .libs/libfxscintilla_la-PlatFOX.o .libs/libfxscintilla_la-ScintillaFOX.o -all_load ../scintilla/src/.libs/libscintilla.a -install_name /opt/local/lib/libfxscintilla.16.dylib -compatibility_version 17 -current_version 17.0
ld: flag: -undefined dynamic_lookup can’t be used with MACOSX_DEPLOYMENT_TARGET environment variable set to: 10.1
/usr/bin/libtool: internal link edit command failed
make[1]: *** [libfxscintilla.la] Error 1
make: *** [all-recursive] Error 1

Error: The following dependencies failed to build: rb-fxruby fxscintilla rb-rexml rb-ripper rb-rrb
Error: /opt/local/bin/port: Status 1 encountered during processing.

Nachdem ich keine Lust habe, Makefiles zu debuggen und die angebotene Version alles andere als aktuell ist, ist FreeRide damit auch aus dem Rennen.

MR. Guid
Dieser Debugger ist nicht in eine IDE integriert. Aber was tut man nicht alles, wenn man Fehler suchen will… Es werden externe Bibliotheken benötigt, die ich natürlich beim ersten Versuch nicht kompiliert bekommen habe. Nachdem ich zufällig (hmm, ok, ich habe auf der Mailingliste nachgefragt) auf ein paar Anweisungen gestoßen bin, wie es doch klappen könnte, muß ich erst einmal die weiteren Ergebnisse schuldig bleiben.

Folgende Anweisungen sind von Logan Capaldo:

Steps to get mr_guid working Mac OS X 10.4.5:

1) Install ruby from source (this step may not be necessary, but
you’ll probably have to do silly symlink tricks if you don’t)
2) Install X11.app
2) use fink or possibly darwin-ports to install the gnome libs:
fink install libgnome2 libgnome2-dev libgnome2-shlibs
3) Download and install ruby-gnome2
4) Download and install mr_guid
5) launch X11.app and start mr_guid from an xterm

Arachno Ruby
Diese IDE ist der einzige kommerzielle Vertreter hier im Testfeld. Leider ist die OS X Version noch nicht verfügbar, so daß ich diese nicht testen konnte. $29 bzw. $89 klingen allerdings nach einem vernünftigen Preisrahmen und die Screenshots sehen auch sehr vielversprechend aus.

Fazit: Enttäuschend. Mein aktuelles Projekt, das eigentlich geradezu wie für eine Skriptsprache geschaffen scheint, werde ich jetzt wohl entweder ohne Debugger umsetzen oder doch Java + Hibernate bemühen müssen. Dies ist besonders schade, da Ruby nicht nur als Sprache elegant ist, sondern auch mit Rails ein sehr mächtiges Framework bereitsteht (ich wollte daraus momentan nur ActiveRecord nutzen). Ich bleibe am Ball…

*) Mein Test bestand übrigens darin, folgendes Programm zu debuggen:

puts "Hello world.\n"
puts "Hello world.\n"
puts "Hello world.\n"
puts "Hello world.\n"

Dabei war ein Breakpoint in der zweiten Zeile gesetzt und die Aufgabe war, schrittweise bis zum Ende des Programms zu gelangen. Klingt einfach, aber RDT scheitert daran.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.