Starthilfe bei der Entwicklung durch Scaffolding

Sie haben eine gute Vorstellung von einem neuen Projekt und haben eine grundlegende Datenbank entworfen. Sie wollen eine grundlegende Rails-Anwendung schnell ans Laufen bringen.

Lösung

Sobald Sie Ihre Datenbank angelegt und Rails für die Kommunikation mit der Datenbank konfiguriert haben, können Sie Rails das generieren lassen, was als Scaffolding bezeichnet wird. Scaffolding generiert eine grundlegende CRUD-Webanwendung (»Create, Read, Update and Delete«, zu Deutsch etwa »Anlegen, Lesen, Aktualisieren und Löschen«), einschließlich des Controller- und View-Codes, der mit Ihrem Modell interagiert. Wenn Sie Scaffolding generieren, erhalten Sie eine voll funktionsfähige, wenn auch grundlegende Webanwendung, die als Ausgangspunkt für die weitere Entwicklung dienen kann.

Es gibt zwei Möglichkeiten, das Scaffolding unter Rails zu generieren. Die erste besteht darin, Rails den gesamten für die Anwendung benötigten View- und Controller-Code hinter den Kulissen dynamisch generieren zu lassen. Sie erledigen das mit Hilfe der scaffold-Methode des Action Controllers. Die zweite Möglichkeit ist der Einsatz des Rails Scaffolding-Generators für die Generierung des Scaffolding-Codes in Ihrem Anwendungsverzeichnis.
Um zu zeigen, wie das Scaffolding funktioniert, wollen wir eine Rails-Anwendung anlegen, die eine Liste von Programmiersprachen zusammen mit einer Beschreibung speichert. Wir beginnen mit der Einrichtung Ihrer Datenbank. Generieren Sie ein Datenbank-Migrationskript mit:

$ ruby script/generate migration build_db
 
Das generiert eine Datei namens 001_build_db.rb im db/migrate-Verzeichnis Ihrer Anwendung. Öffnen Sie diese Datei, und fügen Sie Folgendes hinzu:
db/migrate/001_build_db.rb:
class BuildDb < ActiveRecord::Migration
 


  def self.up

    create_table :languages, :force => true do |t|

      t.column :name, :string 

      t.column :description, :string 

    end

  end

 


  def self.down
 
    drop_table :languages

  end

end
 
Führen Sie dieses Migrationsskript aus, um die languages-Tabelle in Ihrer Datenbank aufzubauen:

$ rake db:migrate
 
Sobald Ihre Datenbank angelegt worden ist und die Rails-Anwendung die Verbindung zu ihr herstellen kann, gibt es zwei Möglichkeiten, das Scaffolding zu generieren. Die erste besteht in der Verwendung der scaffold-Methode. Legen Sie ein Modell namens language.rb an:
$ ruby script/generate model language
 
Nun legen Sie einen Controller namens language_controller.rb an:
$ ruby script/generate controller language

 
Diese beiden Generatoren zeigen Ihnen, welche neuen Dateien zu Ihrer Rails-Anwendung hinzugefügt wurden. Öffnen Sie den neu angelegten language-Controller, und fügen Sie den folgenden Aufruf in die scaffold-Methode ein:
app/controllers/language_controller.rb:

class LanguageController < ApplicationController

  scaffold :languages

end
 
Hier übergeben Sie der scaffold-Methode ein Ihr Modell repräsentierendes Symbol, in diesem Fall also :languages. Dieser einzelne Aufruf weist Rails an, den gesamten Code zu generieren, der notwendig ist, um CRUD-Operationen auf die languages-Tabelle anzuwenden.

Um sich das Ergebnis anzusehen, starten Sie Ihren Webserver mit:
$ ruby script/server
 
und bewegen sich mit dem Webbrowser an http://localhost:3000/language.

Die zweite Möglichkeit für den Einsatz des Rails-Scaffoldings bietet der scaffold-Generator. Wenn Sie das Scaffolding mit Hilfe des Generators erzeugen, müssen Sie nicht explizit ein Modell oder einen Controller anlegen, wie das bei der vorigen Technik der Fall war. Sobald die Datenbank eingerichtet und konfiguriert ist, führen Sie einfach den folgenden Befehl im Stammverzeichnis Ihrer Anwendung aus:
$ ruby script/generate scaffold language
 
Dieser Befehl erzeugt eine Reihe physikalischer Dateien innerhalb Ihres Anwendungsverzeichnisses, einschließlich der Modell-, Controller- und einer Reihe von View-Dateien. Die Ergebnisse dieser Scaffolding-Technik sind, aus Sicht des Browsers, identisch mit dem ersten Ansatz. Sie erhalten eine grundlegende, funktionierende Webanwendung, die als Basis für die weitere Entwicklung dienen kann.

Diskussion

Viele Leute lassen sich dazu verführen, Rails einmal auszuprobieren, nachdem sie Videos über die unglaublich schnelle Codegenerierung gesehen haben. Andere fühlen sich durch die Vorstellung, dass ein Framework automatisch Code generiert, eher abgestoßen.
Bevor Sie basierend auf dem Scaffolding ein Urteil über Rails abgeben, müssen Sie verstehen, welcher Code für Sie generiert wird (und wie) und wie das Scaffolding in der realen Rails-Entwicklung eingesetzt wird.

Die meisten erfahrenen Rails-Entwickler betrachten das Scaffolding bloß als hilfreichen Einstieg. Sobald das Scaffolding erzeugt wurde, generieren sie den Großteil der Anwendung von Hand. Für Rails-Neulinge kann das Scaffolding eine unverzichtbare Lernhilfe sein, insbesondere wenn der Scaffolding-Code mit der generator-Technik erzeugt wurde. Der generierte Code enthält sehr viel Rails-Code, der die Verwendung der gängigsten Bereiche des Frameworks demonstriert.

Abbildung 2-1 zeigt einige Screenshots der Art von Interface, die durch das Scaffolding generiert wird.

Abbildung 2-1

Durch Rails generiertes CRUD-Scaffolding

Eine einfache Möglichkeit, das Standardaussehen etwas aufzupeppen, bietet die Modifikation des Standard-Stylesheets. Wie Sie sehen können, ist das Design dieser Seiten ohne Anpassungen bestenfalls für die Backend-Administration geeignet.

Dieses Rezept stammt aus dem Rails Kochbuch, veröffentlicht beim O’Reilly Verlag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.