· 4 min read

Starthilfe bei der Entwicklung durch Scaffolding

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

Back to Blog