7.6 Generatoren 

Generatoren helfen dem Entwickler bei der Erstellung von Applikationen, indem sie Code generieren. Sie bieten folgende Vorteile:
- Hilft Anfängern und Profis.
- Verkürzt die Entwicklungszeit.
- Tests werden mit erstellt.
- Erstellung eigener Generatoren ist möglich.
Verwendung 

script/generate
Mit dem Befehl ruby script/generate erhalten Sie eine Übersicht aller Generatoren.
Um eine Beschreibung zu einem Generator zu sehen, geben Sie ruby script/generate gefolgt vom Namen des Generators an. Um z. B. die Beschreibung zum controller -Generator aufzurufen geben Sie ruby script/generate controller ein:
ruby script/generate controller Usage: script/generate controller ControllerName [options] Description: Stubs out a new controller and its views. Pass the controller name, either CamelCased or under_scored, and a list of views as arguments. ...
Übersicht aller Generatoren 

Folgende Generatoren werden mit Rails geliefert:
- Controller:
Controller dienen der Interaktion zwischen dem Benutzer und der Rails-Applikation. Der Generator generiert eine Controller-Klasse im Verzeichnis app/controllers , den dazugehörigen funktionalen Test im Verzeichnis test/functional , eine Hilfsklasse für die Views im Verzeichnis app/helpers und die Views im Verzeichnis app/views , wenn diese angegeben wurden. Der erste Parameter gibt den Namen des Controllers an. Danach folgen optional die Views.ruby script/generate controller Guest index show edit
- Integration_test:
Hiermit wird ein Integrations-Test im Verzeichnis test/integration generiert. Ein Integrations-Test dient zur Prüfung der Funktionsfähigkeit der Applikation.ruby script/generate integration_test Booking
- Mailer:
Setzen Sie diesen Generator ein, wenn Sie aus Ihrer Rails-Applikation heraus E-Mails versenden möchten (siehe Kapitel 11). Es werden neben der Mailer-Klasse im Verzeichnis app/models Tests im Verzeichnis test/unit mit Testdaten (Fixtures) im Verzeichnis test/fixtures und optional auch die Views generiert.ruby script/generate mailer ContactmessageMailer confirm
- Migration:
Dieser Generator generiert eine Datenbank-Migration-Datei im Verzeichnis db/migrate . Verwenden Sie diesen Generator, um Änderungen an Ihrer Datenbankstruktur vorzunehmen, wie z. B. das Hinzufügen eines Feldes zu einer Datenbank-Tabelle. Migrations verwenden Sie auch, um die Datenbank-Tabellen zu erstellen. Für diesen Zweck ist jedoch der Model-Generator besser geeignet.ruby script/generate migration AddPriceToReservation
- Model:
Um in Ihrer Rails-Applikation auf eine Datenbanktabelle zugreifen zu können, benötigen Sie eine Model-Klasse. Dieser Generator erzeugt neben der Model-Klasse im Verzeichnis app/models mit den zugehörigen Tests in test/unit und Testdaten im Verzeichnis test/fixtures auch eine Datenbank-Migration-Datei für die Erstellung der Datenbank-Tabelle. Geben Sie den Namen des Models an. Optional können Sie auch schon die Felder mit den dazugehörigen Datentypen angeben:ruby script/generate model Guest fname:string lname:string
- Observer:
Es wird eine Observer-Klasse im Verzeichnis app/models und ein zugehöriger Test im Verzeichnis test/unit angelegt:ruby script/generate observer Reservation
- Plugin:
Setzen Sie diesen Generator ein, wenn Sie eine eigene Erweiterung erstellen möchten. Der Generator generiert ein neues Plug-in im Verzeichnis vendor/plugins mit einer init.rb und einer README . Zusätzlich werden die Verzeichnisse lib , task und test angelegt. Als Parameter erwartet der Generator den Namen des Plug-ins:ruby script/generate plugin MeinPlugin
- Resource:
Diesen Generator können Sie nutzen, um eine Ressource zu erzeugen. Es werden eine leeres Model, ein leerer Controller sowie die Unit- und Functional-Testklassen und die Fixtures generiert. Der dazugehörige map.resources -Eintrag in der Datei config/routes.rb wird auch vorgenommen. Der Generator resource generiert keine Methoden im Controller und auch nicht die dazugehörigen Views. Das übernimmt der scaffold -Generator. Als Parameter erwartet der resource -Generator den Namen des Models im Singular und eine optionale Liste von Spaltenname:sql_type -Paaren. Werden diese angegeben, werden die entsprechenden Felder in der Migration angelegt. Die Felder created_at und updated_at werden automatisch angelegt.ruby script/generate resource person name:string
- Scaffold:
Dieser Generator erzeugt alle erforderlichen Dateien mit allen erforderlichen Inhalten, um sofort eine Ressource nutzen zu können. Es werden das Model, die Migration-Datei, der Controller mit den CRUD-Actions, die dazugehörigen Views und die fertigen Testklassen generiert. Der erforderliche map.resources -Eintrag in der Datei config/routes.rb wird auch automatisch vorgenommen. Als erster Parameter wird der Name des Models erwartet. Optional können Sie eine Liste von Spaltenname:sql_type -Paaren übergeben. Werden diese angegeben, werden die entsprechenden Felder in der Migration angelegt. Die Felder created_at und updated_at werden automatisch angelegt.ruby script/generate scaffold post message:text
- Session_migration:
Mit diesem Generator erstellen Sie eine Migration, um die Tabelle sessions für das Session-Management anzulegen. Der Generator erwartet keine weiteren Parameter:ruby script/generate session_migration
Weitere Generatoren stehen als Gem-Pakete zur Verfügung (gem search -r generator).
Rails 2.0 |
In Rails 2.0 wurde der Generator scaffold_resource aus Rail 1.2 in scaffold umbenannt. Der alte scaffold -Generator fällt ersatzlos weg. |
Rückgängig machen 

Die generierten Skripte können mit dem Befehl ruby script/destroy rückgängig gemacht werden. Verwenden Sie dabei die gleichen Parameter wie beim Generieren mit ruby script/generate.
ruby script/destroy controller Guest index show edit rm app/views/guest/edit.rhtml rm app/views/guest/show.rhtml rm app/views/guest/index.rhtml rm app/helpers/guest_helper.rb rm test/functional/guest_controller_test.rb rm app/controllers/guest_controller.rb rmdir test/functional notempty test rmdir app/views/guest notempty app/views notempty app notempty app/helpers notempty app notempty app/controllers notempty app
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.