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

Rails 1.2: Controller in Unterverzeichnissen organisieren

Manche Controller werden besser unter einem “Über-Controller” zusammengefasst, um die Struktur sowohl in den Quelltextverzeichnissen als auch in dem URL-Aufbau klar zu halten. So z.B. die Administrationsfunktionen einer Rails-Anwendung. Um eine Benutzer- sowie eine Rechte-Verwaltung unter der Übergruppe “Administration” zu führen, kann man zuerst die Verzeichnise für die Übergruppe anlegen:

app/controllers/administration/
app/views/administration/

Die Controller für Benutzer- und Rechteverwaltung finden in diesem ersten erstellen Verzeichnis Platz:

app/controllers/administration/user_controller.rb
app/controllers/administration/permission_controller.rb

Die Templates lagern hingegen in einem einzelnen Unterverzeichnis für jeden Controller:

app/views/administration/user/
app/views/administration/permission/

d.h. für den UserController werden die Templates hier erwartet:

app/views/administration/user/list.rhtml
app/views/administration/user/show.rhtml

etc.

Die letzte Änderung findet in den Controllern selbst statt. Sie werden nicht mit:

class UserController < ApplicationController

definiert, sondern mit:

class Administration::UserController < ApplicationController

Die Benutzer- und Rechte-Verwaltung sind jetzt unter:

http://deineSeite/administration/user

und

http://deineSeite/administration/permission

zu erreichen.

Rails 1.2: Deutsche Model-Namen in Rails

Die singularize und pluralize Funktionen von Rails können von Haus aus für die englische Sprache verwendet werden.

Für ein Projekt wollte ich erst deutsche Model-Namen nutzen und habe die Rails-Anwendung dementsprechend angepasst:

In der environment.rb:

Inflector.inflections do |inflect|

# die englischen vorgaben vergessen
inflect.clear

# worte im singular werden mit
# einem “e” für die plural-Form erweitert
inflect.plural /^([a-zA-z]*[^aoieukgh])$/i , ‘\1e

# worte, die im plurar auf e enden, werden
# für die singular-Form um das e gekürzt
inflect.singular /^([a-zA-z]*)e/i, ‘\1′

# spezial regeln für worte, die aus diesen
# regeln herausfallen
# (erstes wort singular, zweites plural)
inflect.irregular ‘mitglied’, ‘mitglieder’

end

Ich habe die Idee jedoch schnell verworfen, da wir besser englische Modelnamen (intern relevant) und deutsche Controllernamen (nach aussen hin, z.B. für Suchmaschinen relevant) verwenden, um so unnötige Routes zu ersparen. Daher können die Regeln sicher noch für einige andere Wörter erweitert werden, falls aus welchen Gründen auch immer, jemand Interesse an deutschen Model-Namen haben sollte.

Summer Hit 2007

My Summer Hit 2007