Auf einem der letzten germany.rb-Treffen kam zwischendurch eine Frage auf, die wohl doch viele beschäftigt: was unterscheidet eigentlich die drei großen Persistenzbibliotheken ActiveRecord, DataMapper und Sequel? Ein Thema, dass schon so manchen hat fragen lassen, aber selten ordentlich beantwortet wurde. Daher will ich in einer kleinen Serie von Posts alle drei im Detail vorstellen. Dieser Post wird als Auftakt dienen und eine grobe Unterscheidung versuchen.
Beim rug-b Treffen in Berlin scheinen heute weitere Neuigkeiten über die nächste EuRuKo bekanntgegeben worden zu sein. U.a. ist die Veranstaltung auf den 28. und 29. Mai 2011 fixiert worden. Und der Veranstaltungsort wird das Kino International sein, nur knapp 600m von meinem Zweitwohnsitz in Berlin entfernt. Sehr cool!
hanna ist ein Template für das Ruby-Dokumentationstool RDoc. Es weist im Gegensatz zum Standard-Template Darkfish (welches ihr z.B. auf der RDoc-Website bewundern könnt) eine sehr angenehm lesbare HTML-Ausgabe auf und enthält zudem eine Suchfunktion für Methodennamen. Eine beispielhaft mit hanna generierte Dokumentation findet ihr etwa im Dokumentationsteil der Website meines Automations-Projekts und es leidet auch nicht an einigen Problemen wie Darkfish, welches zum Beispiel nicht mit mehrzeiligen Methodendefinitionszeilen (solche können mit der Direktive call-seq erzeugt werden) umgehen kann. In diesem Blogpost möchte ich mich damit befassen, wie man hanna dazu bringen kann, die Ruby-Quellen zu dokumentieren, sodass man nicht immer an Webseiten wie ruby-doc.org (welches oft nicht aktuell ist) oder rdoc.info (welchem hin und wieder einige Teile insbesondere der Stdlib fehlen) gebunden ist. Außerdem werden wir nicht umhin kommen, dasselbe auch für installierte Gems zu tun.
Zum 10. mal trafen sich nun Rubyisten aus der ganzen Welt in den Vereinigten Staaten (das liegt unterhalb von Kanada) um über Ruby zu sprechen, zu singen und zu philosophieren. Mit knapp 800 Teilnehmern, drei parallelen Tracks und 61 Vorträgen über drei Tage war es wohl eine der größte Ruby Veranstaltungen jemals. Hier ein paar Notizen von den Events die ich mir angeschaut habe.
Shugo hat eben folgenden Änderungsvorschlag vorgestellt:
Ganz witzig zu lesen aber im Endeffekt unglaublich traurig, dass so viele Leute Ihre Zeit mit solchen Diskussionen verschwenden. Es geht um eine Copyright Verletzung des Buches Learnng Python The Hard Way von Zed Shaw.
Basierend auf einem Draft von Dethix.
Immer wieder kommt es zu Problemen, die durch unterschiedliche Ruby Versionen verursacht werden. Die Entwickler werden dabei gezwungen, viel Zeit und Energie in eine möglichst große Kompatibilität zu investieren. Dies treibt jedoch die Kosten in die Höhe, erweitert die Komplexität der Software und behindert die technische Weiterentwicklung.
Ganz frisch und noch nicht mal im Trunk zu finden, ist das neuste Kind der MiniTest Familie: minitest/benchmark. Diese Bibliothek stellt die Möglichkeit zur Verfügung, die Performance eines Codestückes zu testen. Dabei werden jedoch nicht die absoluten Zahlen als Maßstab genommen, sondern die Wachstumsrate eines Algorithmus. Das Ganze könnte z.B. so aussehen:
1 2 3 4 5 6 7 8 9 10 11 |
require 'minitest/benchmark' class TestAlgo < MiniTest::Unit::TestCase def bench_my_algorithm assert_performance_linear 0.9999 do |n| n.times do @obj.my_algorithm end end end end |
Dieser Test ist erfolgreich, solange @obj.my_algorithm linear wächst. Die folgenden Assertions stehen zur Auswahl:
Bei all diesen Assertions kann ein Schwellwert für die Abweichung angegeben werden. Individualisten können weiterhin assert_performance verwenden, dort kann die Wachstumsrate selbst definiert werden.
Das alles bald auch in der Standardbibliothek eures Vertrauens…
Unverhofft kommt oft. Und so ergab es sich, dass ich vorletztes Wochenende (30. und 31. Oktober) planmäßig nur 300km von Shanghai entfernt war und mir die Chance nicht entgehen ließ, der größten Rails-Usergroup in China einen Besuch abzustatten.

Eine Weile (mehr als 4 Jahre) ist es inzwischen her, das Murphy hier zuletzt etwas zu rescue geschrieben hat. In der Erwartung, dass sich der Stoff inzwischen gesetzt hat, will ich hier zwei rescue-Varianten nochmal näher unter die Lupe nehmen: die Modifikator-Variante und die Methoden-Variante. Ist zwar kein Sonntag, aber hier mal wieder etwas Syntax.
Da es wahrscheinlich zu Recht einiges an Kritik am letzten Artikel gab. Hier eine andere Version der Betrachtung des CRE163 Podcasts welche hoffentlich nicht ganz so polemisch daher kommt.
2010-10-11 (05:22 CST): Ergänzung von Florian eingebaut.
Gestern hatte ich einen genialen Tag. Dem Hannover Zoo habe ich einen Besuch abgestattet, es gab leckeres Essen und der Abend gestaltete sich in zwei Bars sehr nett. Und dann hörte ich kurz vor Mitternacht, dass sich die aktuelle Chaos Radio Express Ausgabe um Ruby dreht. Der perfekte Tag. Bis ich mir die Folge anhörte…
Das eigentlich unter dem Titel "Forentreffen" geborene, aber spontan in "Germany.rb" umbenannte Treffen im Sublab in Leipzig ist nun vorbei. Zu allererst an dieser Stelle: vielen Dank an das Sublab für den Ort, das Fachgesimple und die herzliche Aufnahme. Die spontan gefundenen Themen gingen von Encoding über Concurrency-Abstraktionen bis auf der Suche nach den letzten 2 Byte in CodeGolf-Problemen. Zum Schluss gab es eine interessante Diskussion über das Projekt, die ich im Folgenden zusammenfassen will. Wiederholung wahrscheinlich.
Der Konferenzplan für die RubyConf 2010 wurde so eben veröffentlicht. Diese findet in New Orleans statt und wird mit drei parallelen Tracks über drei Tagen die bisher größte RubyConf jemals. Chad meinte er erwartet dieses Jahr mehr als 700 Teilnehmer.
Nun ist es endlich fixiert. Am 18. und 19. September 2010 treffen wir uns im sublab in Leipzig zum ersten Germany.rb Ruby User Treffen. Es gibt keine Teilnahmegebühr und kein statisches Programm. Statt dessen gibt es Platz für jeden um seine Ideen vorzutragen und sein Wissen zu erweitern.
Mehr Informationen gibt es auf der offiziellen Ruby Webseite. Es werden aus jetziger Sicht u.a. mindestens vier Autoren aus der Ruby-Mine anwesend sein. Ich hoffe auf viele bekannte und noch viel mehr unbekannte Gesichter. Also bis zum nächsten Wochenende in Leipzig!