{"id":81,"date":"2006-02-22T21:27:18","date_gmt":"2006-02-22T20:27:18","guid":{"rendered":"http:\/\/www.tupperclub.de\/blog\/?p=81"},"modified":"2006-02-22T22:21:25","modified_gmt":"2006-02-22T21:21:25","slug":"programmieren-mit-ruby-unter-os-x","status":"publish","type":"post","link":"https:\/\/www.tupperclub.de\/blog\/?p=81","title":{"rendered":"Programmieren mit Ruby unter OS X"},"content":{"rendered":"<p>OS X Tiger enth\u00e4lt 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\u00fcr erste Schritte ausreichen. Momentan grassiert der Ruby on Rails Hype im Internet, also war es auch f\u00fcr mich an der Zeit, meine ersten Schritte damit zu machen. Wie immer sollte das nicht so einfach sein&#8230;<br \/>\n<!--more--><br \/>\nAls erstes braucht man f\u00fcr den Einstieg gute Literatur. &#8222;<a href=\"http:\/\/pragmaticprogrammer.com\/titles\/rails\/index.html\">Agile Web Development with Rails<\/a>&#8220; und &#8222;<a href=\"http:\/\/pragmaticprogrammer.com\/titles\/ruby\/index.html\">Programming Ruby &#8212; A Pragmatic Programmers&#8216; Approach<\/a>&#8220; sind daf\u00fcr gut geeignet. Beide B\u00fccher stammen aus der Feder der Autoren von &#8222;The Pragmatic Programmer&#8220;. Die Installation von Ruby selbst ist nicht dramatisch. Entweder kompiliert man es selbst oder verwendet das bei DarwinPorts verf\u00fcgbare Paket.<\/p>\n<p>Als verw\u00f6hnter Java-Entwickler ben\u00f6tigt man nat\u00fcrlich noch die passende Entwicklungsumgebung mit Debugger. Ich will hier nicht auf die verschiedenen Editoren eingehen, die es f\u00fcr OS X gibt, sondern auf meine Schwierigkeiten, einen passenden Debugger zu finden.<\/p>\n<p>Die Kandidaten sind:<\/p>\n<ol>\n<li><code>ruby -r debug<\/code><\/li>\n<li><a href=\"http:\/\/rubyeclipse.sourceforge.net\/\">RDT<\/a><\/li>\n<li><a href=\"http:\/\/freeride.rubyforge.org\/wiki\/wiki.pl\">FreeRide<\/a><\/li>\n<li><a href=\"http:\/\/mr-guid.rubyforge.org\/\">Mr. Guid<\/a><\/li>\n<li><a href=\"http:\/\/www.ruby-ide.com\/ruby\/ruby_ide_and_ruby_editor.php\">ArachnoRuby<\/a><\/li>\n<\/ol>\n<p><strong>ruby -r debug<\/strong><br \/>\nFunktioniert problemlos. Man mu\u00df allerdings beliebig viel Zeit mitbrigen, da man nur \u00fcber die Kommandozeile arbeiten kann. Mit etwas \u00dcbung (und Leidensf\u00e4higkeit) kann man damit sicherlich arbeiten, mit einem Debugger, wie er z.B. in IntelliJ IDEA oder Eclipse eingebaut ist, kann man das nat\u00fcrlich nicht vergleichen. Als einziger Debugger hat der Debug-Modus \u00fcbrigens meinen Test bestanden<a href=\"#test\">*<\/a>.\n<\/p>\n<p><strong>RDT<\/strong><br \/>\nDas Ruby Plugin f\u00fcr Eclipse ist einfach zu installieren. Danach kann man bequem auf die API-Dokumentation zugreifen und hat Syntax-Highlighting im Editor. Code-Vervollst\u00e4ndigung ist nicht verf\u00fcgbar. 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:<\/p>\n<blockquote>\n<p>\nruby 1.8.4 debugger listens on port 55792<br \/>\n\/Users\/dittert\/Documents\/workspace\/FileManager\/Test.rb:4: [BUG] Segmentation fault<br \/>\nruby 1.8.4 (2005-12-24) [powerpc-darwin8.5.0]\n<\/p>\n<\/blockquote>\n<p>Damit scheidet RDT aus&#8230;\n<\/p>\n<p><strong>FreeRide<\/strong><br \/>\nFreeRide ist eine komplett in Ruby geschriebene IDE (bis auf ein paar native externe Bibliotheken). Die Screenshots auf der Homepage sehen auch vielversprechend aus. F\u00fcr die Installation unter OS X ben\u00f6tigt man <a href=\"http:\/\/darwinports.opendarwin.org\/\">DarwinPorts<\/a>. Dar\u00fcber erh\u00e4lt man allerdings nur die fast ein Jahr alte Version 0.9.2 (aktuell ist 0.9.5). Dennoch habe ich all diese H\u00fcrden auf meiner Suche nach einem Debugger auf mich genommen. Ergebnis (nach einer halben Ewigkeit):<\/p>\n<blockquote>\n<p>\nglibtool &#8211;tag=CXX &#8211;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<br \/>\ng++ -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<br \/>\nld: flag: -undefined dynamic_lookup can&#8217;t be used with MACOSX_DEPLOYMENT_TARGET environment variable set to: 10.1<br \/>\n\/usr\/bin\/libtool: internal link edit command failed<br \/>\nmake[1]: *** [libfxscintilla.la] Error 1<br \/>\nmake: *** [all-recursive] Error 1<\/p>\n<p>Error: The following dependencies failed to build: rb-fxruby fxscintilla rb-rexml rb-ripper rb-rrb<br \/>\nError: \/opt\/local\/bin\/port: Status 1 encountered during processing.\n<\/p>\n<\/blockquote>\n<p>Nachdem ich keine Lust habe, Makefiles zu debuggen und die angebotene Version alles andere als aktuell ist, ist FreeRide damit auch aus dem Rennen.<\/p>\n<p><strong>MR. Guid<\/strong><br \/>\nDieser Debugger ist nicht in eine IDE integriert. Aber was tut man nicht alles, wenn man Fehler suchen will&#8230; Es werden externe Bibliotheken ben\u00f6tigt, die ich nat\u00fcrlich beim ersten Versuch nicht kompiliert bekommen habe. Nachdem ich zuf\u00e4llig (hmm, ok, ich habe auf der Mailingliste nachgefragt) auf ein paar Anweisungen gesto\u00dfen bin, wie es doch klappen k\u00f6nnte, mu\u00df ich erst einmal die weiteren Ergebnisse schuldig bleiben.\n<\/p>\n<p>Folgende Anweisungen sind von Logan Capaldo:<\/p>\n<blockquote><p>\nSteps to get mr_guid working Mac OS X 10.4.5:<\/p>\n<p>1) Install ruby from source (this step may not be necessary, but<br \/>\nyou&#8217;ll probably have to do silly symlink tricks if you don&#8217;t)<br \/>\n2) Install X11.app<br \/>\n2) use fink or possibly darwin-ports to install the gnome libs:<br \/>\n     fink install libgnome2 libgnome2-dev libgnome2-shlibs<br \/>\n3) Download and install ruby-gnome2<br \/>\n4) Download and install mr_guid<br \/>\n5) launch X11.app and start mr_guid from an xterm\n<\/p><\/blockquote>\n<p><strong>Arachno Ruby<\/strong><br \/>\nDiese IDE ist der einzige kommerzielle Vertreter hier im Testfeld. Leider ist die OS X Version noch nicht verf\u00fcgbar, so da\u00df ich diese nicht testen konnte. $29 bzw. $89 klingen allerdings nach einem vern\u00fcnftigen Preisrahmen und die Screenshots sehen auch sehr vielversprechend aus.\n<\/p>\n<p><strong>Fazit:<\/strong> Entt\u00e4uschend. Mein aktuelles Projekt, das eigentlich geradezu wie f\u00fcr eine Skriptsprache geschaffen scheint, werde ich jetzt wohl entweder ohne Debugger umsetzen  oder doch Java + Hibernate bem\u00fchen m\u00fcssen. Dies ist besonders schade, da Ruby nicht nur als Sprache elegant ist, sondern auch mit Rails ein sehr m\u00e4chtiges Framework bereitsteht (ich wollte daraus momentan nur ActiveRecord nutzen). Ich bleibe am Ball&#8230;\n<\/p>\n<p><a name=\"test\">*)<\/a> Mein Test bestand \u00fcbrigens darin, folgendes Programm zu debuggen:<br \/>\n<code><br \/>\nputs \"Hello world.\\n\"<br \/>\nputs \"Hello world.\\n\"<br \/>\nputs \"Hello world.\\n\"<br \/>\nputs \"Hello world.\\n\"<br \/>\n<\/code><br \/>\nDabei 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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OS X Tiger enth\u00e4lt 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\u00fcr erste Schritte ausreichen. Momentan grassiert der Ruby on Rails Hype im Internet, also war es auch f\u00fcr mich an der Zeit, meine ersten Schritte damit zu machen. Wie immer sollte [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-mac-os-x"],"_links":{"self":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=81"}],"version-history":[{"count":0,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/81\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}