Meine verwendete Blogsoftware habe ich selbst programmiert. Hier will ich kurz vorstellen, welche Technologien usw. zum Einsatz kommen. Ich werden diese Seite laufend vervollständigen und versuchen, auf den aktuellen Stand zu halten.

Programmiersprache und Webframework

Als Programmiersprache habe ich meinen aktuellen und hoffentlich noch langen Favoriten - Ruby - in der Version 1.9.2 gewählt. Ruby on Rails als Webframework ist bei mir das Mittel der Wahl. Dabei setze ich auf die zur Zeit aktuelle Version 3.0.4.

Verwendete Gems und Plugins

Rails bietet out-of-the-box viel, aber nicht alles. Deswegen setze ich eine ganze Menge an RubyGems und Rails-Plugins ein, um nicht viele Räder neu erfinden zu müssen.

Authentifizierung

Für den Administrationsbereich muss ich mich natürlich authentifizieren. Weil ich mir nicht noch ein Passwort merken müssen will, habe ich OpenID integriert. Mit dem Gem Authlogic wurde der größte Teil der Benutzer- und Sessionverwaltung erschlagen, die OpenID-Funktionalitäten rüstet das Plugin Authlogic OpenID nach.

Auszeichnungssprache für den Inhalt

Um für die Artikel und Seiten kein HTML hacken zu müssen, verwende ich die Auszeichnungssprache Markdown in Form des RubyGems RDiscount, einer schnellen Markdown-Implementierung für Ruby.

In meinem Blog wird auch allerlei Code zu bestaunen sein. Markdown bietet zwar Codeformatierung, allerdings keine Syntaxhervorhebung. Die habe ich mit dem Gem tm_syntax_highlighting und ein paar Codezeilen nachrüsten können. Themes in Form von CSS liegen dem Plugin bei, sie sind an die Themes des Mac-Editors TextMate angelehnt. Mein Dank geht an Mike Zazaian, der das Thema super aufbereitet hat.

Kleinigkeiten

  • will_paginate teilt Übersichten (Artikel, Kategorien, ...) auf mehrere Seiten auf, ein eigener LinkRenderer erzeugt lesbare und SEO-optimierte URLs.
  • Mit Paperclip verarbeite ich Dateiuploads. Speziell bei Bildern bietet sich diese Gem an, weil es automatisch Thumbnails erzeugt.
  • Ein kleiner Plugin-Eigenbau unterstützt beim Erzeugen von Slugs (Namen statt IDs in URLs). Es gibt an dieser Baustelle zwar bereits eine Unmenge an Lösungen, aber z.B. das Handling von Umlauten vergessen unsere englischsprachigen Programmiererfreunde gerne mal. Vielleicht veröffentliche ich diesbezüglich mal etwas oder commite ein paar Änderungen an ein gutes, bestehendes Plugin.

Forscherei

Ich verwende als Templatesprache für die Views größtenteils HAML statt ERB. SASS kommt zum Einsatz, um einige Unzulänglichkeiten von CSS zu umgehen.

Bei beiden Technologien bin ich mir noch nicht sicher, ob sie der Weisheit letzter Schluß sind, vielleicht werde ich am Arbeitsplatz noch ein paar Projekte mit HAML realisieren, um mit eine abschließende Meinung bilden zu können.

Hoptoad wacht über auftretende Fehler und benachrichtigt mich per Mail und Atom-Feed. Auch hier bin ich mir nicht sicher, ob man diesen Dienst wirklich benötigt, oder ob nicht exception_notification-Plugin den pragmatischeren Weg darstellt und ebenfalls ausreichend ist.

Mit dem Plugin inherited_resources verschlanke ich meine Controller im Adminbereich, die größtenteils den Standardcode eines RESTful Controllers enthalten. Wie viel redundanten Code man sich damit wirklich spart, bleibt abzuwarten. Zwar lässt sich das Plugin sehr gut an eigene Anwendungsfälle anpassen, der dazu notwendige Code muss aber eben quantitativ viel knapper als der Originalcode sein.

Deployment

An dieser Baustelle gibt es bei mir nichts besonderes zu berichten.

  • Ich verwende Debian Lenny, weil ich mit Ubuntu in letzter Zeit schlechte Erfahrungen gemacht habe.
  • Als Datenbank verwende ich - Überraschung - MySQL!
  • Als Webserver kommt Apache2 in Kombination mit Passenger zum Einsatz. Diese Lösung ist am einfachsten zu warten, speichersparend und das Deployment geht leicht von der Hand.