May 25, 2007

Ruby on Rails an der Uni-Düsseldorf

Bei dem Ruby on Rails Tutorial (Flyer als PDF) an der Heinrich-Heine-Universität in Düsseldorf haben wir am Mittwoch insgesamt 34 Teilnehmern unser liebstes Framework für datenbank-gestützte Web-Anwendungen vorgestellt. CREDITS: Natürlich ist Rails nicht "unser Framework" sondern ein frei-verfügbares, von DHH entwickeltes Framework.

Fragen des Tages bezogen sich auf die Erstellung barrierefreier Web-Anwendungen und auf ActiveRecords Caching-Strategien, beim Zugriff auf im Speicher geänderter Entitäten, die noch nicht in die Datenbank gespeichert wurden.

Erstellung barrierefreier Web-Anwendungen

Eine Web-Anwendung nennt man barrierefrei, wenn die Verwendung der Inhalte keine speziellen technischen oder körperlichen Fähigkeiten zwingend voraussetzt: Zum Beispiel, wenn sie auch mit einem Nicht-Standard-Web-Browser sondern beispielsweise mit einem PDA-Browser angesehen oder mit einem Braille(Vor-)lesegerät vorgelesen werden kann. Insbesondere für sehbehinderten Menschen ist die Schrift-Vergrößerung der einzige Weg, Inhalte lesen zu können: eine Option, die blinden Menschen nicht zur Verfügung steht.

Web-Oberflächen realisiert man mit Ruby on Rails direkt mit (X)HTML und CSS. Man verwendet in Rails spezielle Templating-Mechanismen, wie ERb oder RJS, mit deren Hilfe Inhalte (Text-/HTML-/JavaScript-Dokumente) dynamisch zusammen gesetzt werden können. So kann man - als Rails-Entwickler - die speziellen Anforderungen an die Barrierefreiheit der Web-Inhalte selbst gut berücksichtigen.

Es hat sich bewährt dabei ein paar Faustregeln zu befolgen:

  • Immer wiederkehrende Navigationselemente sollten im HTML-Text ans Ende gestellt werden. So dass ein Programm zum Vorlesen mit den Inhalten beginnt und nicht bei jedem Seitenwechsel 5-Minuten lang ein Navigationsmenu vorliest.
  • Mittels CSS kann die Seite anschließend so gesetzt werden, dass alle Elemente an ihrem angestammten Platz sind und dass der Besucher der Seite im Browser einstellen kann, wie groß die Schrift sein soll.
  • Die Webseite sollte komplett ohne Javascript auskommen können. Dies erreicht man am einfachsten dadurch, dass Javascript nicht im HTML verwendet wird.
  • Um die Ergonomie zu erhöhen, wird man Javascript-Funktionalität in die Webseite einbetten wollen. Dies sollte mittels CSS geschehen, über das HTML-Elemente selektiert und mit Javascript-Funktionalität erweitert werden kann.
  • Ein gutes Buch zu dem Thema ist nebenstehend abgebildet: Barrierefreies Webdesign
Barrierefreies Webdesign

Weder erschwert noch erleichtert Rails die Erstellung von barrierefreien Webseiten, zumindest solange man auf AJAX-Features verzichtet. Sobald man allerdings mit RJS beginnt, könnte die Barrierefreiheit schwieriger zu erhalten sein. - Dazu habe bislang noch keine Meinung.


Rails ActiveRecord und Caching

Im Gegensatz zu anderen Persistenz-Frameworks hat ActiveRecord keinen Cache eingebaut. Entweder man verlässt sich auf die Caching-Strategien der eingesetzten Datenbank (was in verschiedenen Szenarien eine gute Idee ist) oder man erweitert Rails um ein eigenes Caching (wenn dies nötig wird). Glücklicherweise bietet Rails vielfältige Möglichkeiten, sich in den Kontrollfluss einzuklinken (bevor eine Methode aufgerufen wird, bevor eine Entität gespeichert wird, bevor eine find-Methode ausgeführt wird, usw.). Damit kann man die Erweiterung um ein Caching erstens recht einfach selbst zu bauen.

Nachtrag:

Stefan, Ihr wisst schon, der mit dem Blog, hat mir zu dem Caching noch einen Link auf einen alten Eintrag zur Identity Map geschickt.

Posted by Phillip Ghadir at May 25, 2007 8:33 AM