7.3 Namenskonventionen 

Magie?
In diesem Abschnitt wollen wir Ihnen die automatische Namensgebung in Rails, die Rails-Newcomer mit am meisten verwirrt, erläutern. Was einen am Anfang am meisten überrascht, ist, dass Rails, wenn man ein Model Person aufruft, irgendwie zu wissen scheint, dass es auf eine Datenbanktabelle people zugreifen muss. Wirkt wie Magie, ist es aber nicht.
Wir werden in diesem Abschnitt die Default-Regeln von Rails für die Namensgebung erläutern. Alle diese Regeln können Sie in Ihren Klassen durch entsprechende Deklarationen überschreiben.
CamelCase, Unterstriche und Plural
Häufig benennen wir Variablen und Klassen mit mehreren Wörtern, ja manchmal sogar mit kurzen Phrasen. In Ruby sind dabei folgende Regeln zu beachten:
Regeln
Variablennamen werden immer kleingeschrieben. Besteht der Name aus mehreren Wörtern, werden diese mit einem Unterstrich miteinander verbunden: order_status . Bei Klassen und Modulen verhält sich das anders. Hier wird der Name immer zusammengeschrieben. Besteht er aus mehreren Wörtern, so beginnt jedes neue Wort mit einem Großbuchstaben, wie z. B. FlightBooking . Diese Schreibweise ist auch unter dem Begriff CamelCase bekannt.
Rails hat diese Konventionen von Ruby übernommen und in zweierlei Hinsicht erweitert:
Tabellennamen
Rails geht davon aus, dass Tabellennamen, wie Variablennamen in Ruby, immer kleingeschrieben werden und, sollten sie aus mehreren Wörtern bestehen, dass diese durch einen Unterstrich getrennt werden. Außerdem wird vorausgesetzt, dass Tabellennamen immer im Plural stehen. Dieses führt dann zu Tabellennamen wie z. B. employees oder flight_bookings .
Dateinamen
Dateinamen werden in Rails auch kleingeschrieben, und falls erforderlich, werden zusammengesetzte Wörter durch einen Unterstrich miteinander verbunden.
Diese Annahmen nutzt Rails, um Namen automatisch zu konvertieren. Zum Beispiel könnte Ihre Applikation ein Model enthalten, das Abenteuerreisen verwaltet. Sie würden diese Klasse AdventureTrip nennen. Rails würde daraus automatisch ableiten, dass
- die dazugehörige Datenbanktabelle adventure_trips heißen würde (der Name des Models wird in Kleinbuchstaben umgewandelt, die einzelnen Wörter werden durch Unterstriche miteinander verbunden und in den Plural gesetzt).
- die Klasse in der Datei app/models/adventure_trip.rb definiert ist.
Controller
Für die Rails-Controller gelten zusätzliche Namenskonventionen. Angenommen, wir haben einen Controller mit dem Klassennamen FlightsController, dann gelten folgende Konventionen:
- Die Controller-Datei heißt flights_controller.rb und befindet sich im Verzeichnis app/controllers .
- Das zugehörige Helfermodul heißt FlightsHelper und wird in der Datei flights_helper.rb im Verzeichnis app/helpers definiert.
- Die dazugehörigen Templates (Views) befinden sich im Verzeichnis app/views/flights .
- Wenn die Datei app/views/layouts/flights.html.erb existiert, wird diese Layout-Datei für alle Templates des Flights-Controllers verwendet.
Es gibt noch eine weitere Besonderheit in Rails:
kein require erforderlich
In »normalem« Ruby-Code müssen wir, bevor wir auf Klassen oder Module zugreifen, diese über das Keyword require inkludieren. Da Rails die Beziehungen zwischen Dateinamen und Klassennamen kennt, ist das normalerweise in einer Rails-Applikation nicht nötig. Stattdessen leitet Rails beim ersten Aufruf einer unbekannten Klasse oder eines unbekannten Modul aus deren bzw. dessen Namen den entsprechenden Dateinamen ab und versucht, die Datei im Hintergrund zu laden. Deshalb können Sie einfach eine Klasse aufrufen, und schon wird die Klasse in Ihre Applikation geladen.
Das ist normalerweise so. Die einzige Ausnahme bildet Code im Verzeichnis lib und dessen Unterverzeichnissen. Da Rails diesen Bereich nicht verwaltet, müssen Sie die Klassen, die Sie aus diesem Verzeichnis nutzen wollen, über require einbinden:
require "klasse_aus_lib_verzeichnis"
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.