Rails 1.2: has_and_belongs_to_many-Beziehung (habtm) mit zusätzlichen Attributen

Die habtm-Funktionalität in Rails ist für n:m-Beziehungen gedacht. Beispiel: ein User soll Teil verschiedener Gruppen sein können und einer Gruppe sollen mehrere User angehören können. Was aber, wenn jede dieser Beziehungen zusätzliche Attribute mit sich bringen soll? Beispiel: User 1 hat in Gruppe 1 die Rolle “admin” inne, in Gruppe 2 “member” etc. Hierfür bietet sich sich eine “has_many through”-Beziehung an. Weiteres unter http://www.infused.org/2005/12/06/has-many-through-association/

Screamo Forever

great screamo/post-hardcore tune

Rails 1.2: nl2br für Rails

Es lebe die nl2br-Funktion! Nur leider hatte ich sie bei Rails bzw. Ruby nicht gefunden (inzwischen schon, siehe Ende des Beitrags). Darum hatte ich kurzerhand ein klitzekleines Plugin namens EnhanceString für Rails geschrieben, dass die String-Objekte um die nl2br-Funktion erweitert.

Für Ahnungslose: nl2br() ist eine Funktion der PHP Syntax, die alle Zeilenumbrüche eines Strings in dessen HTML-Entsprechung <br/> umwandelt.

Installation

  • Plugin herunterladen
  • In das Verzeichnis /vendor/plugins der Applikation auspacken
  • Webserver neu starten

Anwendung

“Erstens..,\nZweitens..”.nl2br

gibt

=> “Erstens..,<br/>Zweitens..”

zurück.

Die Funktion simple_format aus dem TextHelper von Rails regelt dies eleganter. Es werden zusätzlich <p>-Tags um den zu formatierenden String und außerdem bei zwei aufeinander folgenden Zeilenumbrüche gesetzt. Die Zeilenumbrüche bleiben allerdings erhalten, das <br/>-Tag wird hinter jedem einzelnen Zeilenumbruch hinzugefügt.
Beispiel

Rails 1.2: Fehlender Zeichensatz der Rails console (irb)

Die console von Rails 1.2 akzeptiert unter einem deutschen Windows leider nicht von Haus aus alle Zeichen. Darunter die wirklich oft benötigten eckigen Klammern [], der senkrechte Strich | oder auch die Tilde ~

Ich habe einige Beschreibungen im Netz gefunden, die leider nur teilweise funktionierten. Die einfachste Lösung ist es, die –readline Option in der console.rb zu deaktivieren. Nun funktionieren zwar die Sonderzeichen wieder, allerdings ist neben dem sogenannten “auto-complete” auch das Stöbern durch die console History mit den Pfeiltasten deaktiviert. Um irb und die Rails console im vollen Funktionsumfang nutzen zu können sind nur zwei kleine Handgriffe nötig:

1. Die Datei .inputrc herunterladen

2. In der irb.bat (zu finden unter /ruby/bin) folgendes unter der @echo off-Zeile hinzufügen:

SET INPUTRC=C:\.inputrc

wobei C:\.inputrc auf den korrekten Speicherort der Datei angepasst werden muss.

Achtung! Anführungszeichen bei langen Dateinamen werden nicht richtig interpretiert. Statt

SET INPUTRC=”C:\Programme\mein ruby verzeichnis\.inputrc”

daher

SET INPUTRC=C:\Programme\mein ruby verzeichnis\.inputrc

verwenden!

Beim nächsten Starten von irb oder der Rails console funktionieren nun sowohl die Spezialzeichen als auch die readline-Funktionalität.

Beim Nutzen vom breakpointer oder ruby-debug darauf achten, dass in der entsprechenden Umgebung SET INPUTRC=C:\.inputrc ausgeführt wurde.

Keywords: special characters, german, console, irb, breakpointer, rails, problem, readline, noreadline, tilde, eckige klammer, geschweifte klammer, bracket, brace, at symbol

Ruby: a ||= b

a ||= b

means

a = b if a.nil? || a == false