Rails-Entwicklung unter OS X mit TextMate

Sie arbeiten unter Mac OS X und suchen einen GUI-basierten Texteditor, der die Rails-Entwicklung produktiv und angenehm macht.

Lösung

TextMate ist für die meisten Rails-Entwickler, die mit OS X arbeiten, die erste Wahl unter den GUI-Texteditoren (siehe http://macromates.com). TextMate ist keine freie Software, mit ein oder zwei Stunden Rails-Beratung aber leicht zu bezahlen.

Diskussion

TextMate ist der Editor, der vom gesamten Rails-Kern-Entwicklungsteam verwendet wird. Tatsächlich wurde mit ihm wahrscheinlich ein Großteil der Rails-Codebasis geschrieben. TextMate wird mit Ruby on Rails-Syntax-Highlighting und einer Vielzahl von Makros geliefert, mit denen Sie gängige Rails-Konstrukte mit nur wenigen Tastendrucken eingeben können.

Nahezu jede Option von Textmate kann über eine Kombination von Tasten angestoßen werden. Die häufig ausgeführten Operationen werden Sie sich schnell merken, und Sie müssen nicht mit der Maus arbeiten. Wie viele native OS X-Anwendungen verwendet TextMate Emacs-artige Bindungen während der Bearbeitung von Text. Die Eingabe von Ctrl+A bringt Sie beispielsweise an den Anfang der aktuellen Zeile, Ctrl+K löscht den Text von der aktuellen Cursorposition bis zum Ende der aktuellen Zeile und so weiter.
TextMate öffnet eine einzelne Datei in einem enttäuschend einfach aussehenden Fenster, bietet aber exzellente Unterstützung für Projekte (mehrere Dateien enthaltende Verzeichnisse, Unterverzeichnisse etc.), wie z.B. Rails-Projekte. Zum Öffnen eines Rails-Projekts ziehen Sie den Ordner einfach über das Textmate-Icon. Das startet TextMate mit geöffneter Projekt-Palette. Sie können die Dateien Ihres Projekts untersuchen, indem Sie die Verzeichnisse im Projekt-Bedienfeld öffnen und jede Datei in einem eigenen Reiter im Editierfenster öffnen.
<|XrefColor>Abbildung 2-2 zeigt eine Rails-Anwendung in TextMate. Ebenfalls zu sehen ist das Go to File-Fenster, das Sie mit mit Option+T öffnen. In diesem Fenster können Sie schnell zwischen den Dateien Ihres Projekts wechseln.

Abbildung 2-2
Ein mit TextMate geöffnetes Rails-Projekt

TextMate ist über fest eingebaute Pakete und Pakete von Drittanbietern erweiterbar, die als Bundles bezeichnet werden. Zum Beispiel bindet das Rails-Bundle Rails-spezifische Befehle, Makros und Snippets ein, die nahezu jede Aufgabe der Rails-Entwicklung auf die Eingabe einer Tastenkombination reduzieren. Um sich mit den Optionen eines Textmate-Bundles vertraut zu machen, öffnen und untersuchen Sie die verschiedenen Definitionen mit Hilfe des Bundle-Editors (Bundles Æ Bundle Editor Æ Show Bundle Editor) an.


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

Die Pluralisierungsmuster von Rails verstehen

Ihnen ist aufgefallen, dass Rails stark auf Konventionen setzt. Insbesondere nutzt es häufig die Pluralisierung, um den Namen einer Datenbank-Klasse an die dazugehörigen Modell- und Controller-Klassen zu binden. Sie wollen verstehen, wo die Pluralisierung verwendet wird und wo nicht.

Lösung

Es gibt drei Stellen, an denen Rails standardmäßig Pluralisierungskonventionen verwendet:

Namen von Datenbanktabellen: Plural
Die Namen von Datenbanktabellen werden im (englischen) Plural erwartet. So sollte eine Tabelle mit Mitarbeiterdaten (engl. employee) Employees genannt werden.

Namen von Modellklassen: Singular

Die Namen von Modellklassen liegen als Singular der Datenbanktabelle vor, die sie modellieren. So wird beispielsweise ein Employee-Modell basierend auf einer Tabelle namens employees aufgebaut.
Namen von Controller-Klassen: Plural

Die Namen von Controller-Klassen werden pluralisiert, z.B. EmployeesController oder AccountsController.
Sich mit diesen drei Konventionen vertraut zu machen ist ein großer Schritt auf dem Weg, sich bei Rails heimisch zu fühlen. Die Idee hinter der Pluralisierung ist, Ihren Code leserlicher und transparenter zu machen. Ein gutes Beispiel für die Lesbarkeit von Rails-Code bildet die Einrichtung einer 1-zu-M-Beziehung zwischen Kapiteln und Rezepten:

app/models/chapter.rb:

class Chapter < ActiveRecord::Base

  has_many :recipes
 
end
 

Dieser Code sagt: »Ein Kapitel (Chapter) hat viele Rezepte (recipes)«. Sie können sehen, dass das die tieferliegende Beziehung zwischen Kapiteln und Rezepten beschreibt. Und es ist auch für Nicht-Programmierer und Kunden verständlich.

Es gibt andere Stellen, an denen Rails die Pluralisierung nutzt, darunter View-Verzeichnisnamen und Dateinamen funktionaler Tests, Unit-Tests und Test-Fixtures.
Eine der besten Möglichkeiten, sich an die Pluralisierung zu gewöhnen, besteht darin, mit den Rails-Generatoren zu experimentieren und die Option –pretend (oder einfach -p) zu verwenden, wenn man mit script/generate Scaffolding, Controller oder Modelle generiert.

$ ruby script/generate scaffold -p recipe
 
      exists  app/controllers/

      exists  app/helpers/

      create  app/views/recipes

      exists  test/functional/

  dependency  model

      exists    app/models/

      exists    test/unit/

      exists    test/fixtures/

      create    app/models/recipe.rb

      create    test/unit/recipe_test.rb

      create    test/fixtures/recipes.yml

      create  app/views/recipes/_form.rhtml

      create  app/views/recipes/list.rhtml

      create  app/views/recipes/show.rhtml

      create  app/views/recipes/new.rhtml

      create  app/views/recipes/edit.rhtml

      create  app/controllers/recipes_controller.rb

      create  test/functional/recipes_controller_test.rb

      create  app/helpers/recipes_helper.rb

      create  app/views/layouts/recipes.rhtml

      create  public/stylesheets/scaffold.cs
 
Rails wirft (basierend auf dem von Ihnen übergebenen String) alle Dateien aus, die es generieren würde, ohne diese tatsächlich anzulegen. Sie können das Flag –pretend einsetzen, um zu sehen, ob und wann Rails verschiedene Wörter pluralisiert. Schließlich sei noch auf Geoffrey Grosenbach verwiesen, der ein Online-Tool namens »The Pluralizer« gepostet hat, das alle Rails-Pluralisierungskonventionen für ein gegebenes Wort zeigt. Sie finden das Tool unter http://nubyonrails.com/tools/pluralize.

Diskussion

Die Pluralisierung in Rails ist oft das Thema heißer Debatten, insbesondere unter Skeptikern, die eine Debatte vom Zaun brechen wollen. Die Pluralisierung ist nur eine Konvention in einer Reihe von Konventionen, die Rails verwendet. Es versucht damit einen Großteil der Konfiguration zu elimieren, die bei Web-Entwicklungs-Frameworks normalerweise nötig sind.
Letztendlich ist die Pluralisierung nur eine Konvention. Es steht Ihnen immer frei, sie global zu deaktivieren oder in bestimmten Fällen zu überschreiben. Sie deaktivieren sie mit der folgenden Zeile in der Konfigurationsdatei environment.rb:

config/environment.rb:
ActiveRecord::Base.pluralize_table_names = false
 
Ein Problem mit der Pluralisierung besteht darin, dass nicht alle Wörter die richtige Beugung erfahren. Die Klasse, die darüber entscheidet, wie Wörter pluralisiert werden, heißt Inflections. Diese Klasse definiert Methoden, die in Rubys String-Klasse eingebunden werden. Diese Methoden werden in Rails allen String-Objekten zur Verfügung gestellt. Sie können mit diesen Methoden, namentlich mit pluralize, direkt in der Rails-Konsole experimentieren. Hier ein Beispiel:

$ ruby script/console
 
Loading development environment.

>> "account".pluralize
 
=> "accounts"

>> "people".pluralize
 

=> "peoples"
 
Viele der verschiedenen Grenzfälle der englischen Pluralisierung sind in einer Datei namens inflections.rb innerhalb des ActiveSupport-gem-Verzeichnisses enthalten. Hier eine gekürzte Version dieser Datei:

activesupport-1.3.1/lib/active_support/inflections.rb:

Inflector.inflections do |inflect|

  inflect.plural(/$/, 's')

  inflect.plural(/s$/i, 's')

  inflect.plural(/(ax|test)is$/i, '1es') 
 


  ...
 


  inflect.singular(/s$/i, '')

  inflect.singular(/(n)ews$/i, '1ews')

  inflect.singular(/([ti])a$/i, '1um')

   

  ...

 


  inflect.irregular('person', 'people')

  inflect.irregular('man', 'men')

  inflect.irregular('child', 'children')

 

  ...
 


  inflect.uncountable(%w(equipment information rice money species series fish sheep))

end
 
Sie werden letztlich eine bestimmte Pluralisierungsregel finden, die in dieser Datei fehlt. Nehmen wir zum Beispiel an, Sie hätten eine Tabelle mit foo-Datensätzen (die jeweils einen Tipp enthalten, mit denen Ruby-Neulinge zu Meistern werden). In diesem Fall ist der Plural von foo einfach foo, was die pluralize-Methode aber nicht so sieht:

$ ruby script/console
 
>> "foo".pluralize
 
=> "foos"
 
Rails bezeichnet Wörter, die im Plural und im Singular identisch sind, als »unzählbar« (uncountable). Um das Wort foo in eine Liste aller unzählbaren Wörter aufzunehmen, hängen Sie Folgendes an das Ende von environment.rb an:

config/environment.rb:
...
 


Inflector.inflections do |inflect|

  inflect.uncountable "foo"
 
end

 
Laden Sie script/console neu, pluralisieren Sie foo erneut, und Sie werden feststellen, dass Ihre neue Flexionsregel korrekt angewandt wurde.
$ ruby script/console
 

>> "foo".pluralize

=> "foo"
 
Weitere Flexionsregeln können dem Block hinzugefügt werden, der an Inflector.inflections übergeben wird. Hier einige Beispiele:
Inflector.inflections do |inflect|

  inflect.plural /^(ox)$/i, '12en'

  inflect.singular /^(ox)en/i, '1'
 


  inflect.irregular 'octopus', 'octopi'
 


  inflect.uncountable "equipment"

end
 
Diese Regeln werden vor den in inflections.rb definierten Regeln angewandt. Daher können Sie von diesem Framework definierte, vorhandene Regeln überschreiben.


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

Die Windows-Entwicklungsumgebung mit Cygwin erweitern

Obwohl der Großteil Ihrer Entwicklung unter Windows erledigt wird, sind Sie sich der Kommandozeilenwerkzeuge bewusst, die es unter Linux und OS X gibt, einschließlich der GNU-Entwicklungstools. Sie suchen eine Möglichkeit, diese Tools in Ihre Windows-Umgebung einzubinden.

Lösung

Laden Sie Cygwin von http://www.cygwin.com herunter, und installieren Sie es. Nach der Installation sieht Cygwin mehr oder weniger so aus wie der Standard-Windows-Befehlsinterpreter (cmd.exe). Sie verfügen nun aber über eine sehr leistungsfähige Kommandozeilenumgebung, über die Sie Hunderte nützlicher Entwicklungstools starten können.
Bewegen Sie sich mit dem Browser auf http://www.cygwin.com/setup.exe, um das Setup-Programm zu installieren, das Sie durch die Cygwin-Installation führt. Das Programm stellt Ihnen einige Fragen über Ihre Umgebung, z.B. welchen Benutzern Sie Cygwin zugänglich machen wollen und welche Netzwerkeinstellungen der Installer beim Herunterladen der Pakete verwenden soll.
Als Nächstes wird Ihnen eine lange Liste von Paketen präsentiert. Legen Sie fest, welche davon auf Ihrem System installiert werden sollen. Viele dieser Pakete sind standardmäßig nicht ausgewählt. Um die Standard-Installationsoptionen für ein Paket zu ändern, klicken Sie für das gewünschte Paket also die New-Spalte an. Durch das Anklicken wird zwischen dem Überspringen und Installieren eines bestimmten Pakets (manchmal sind mehrere Versionen verfügbar) gewechselt.
Sobald der Installationsassistent abgeschlossen ist, können Sie ihn immer wieder ausführen, um anfänglich nicht installierte Pakete nachzuinstallieren.

Diskussion

Cygwin ermöglicht Ihnen eine GNU/Linux-ähnliche Umgebung unter Windows. Nutzer, die mit der Unix/Linux-Befehlszeile vertraut sind, aus dem ein oder anderen Grund aber Windows verwenden müssen, sollten Cygwin vor allem anderen installieren.
Cygwin stellt Ihnen unter Windows nahezu 800 Softwarepakete zur Verfügung, und zwar kostenlos. Eine vollständige und aktuelle Liste der verfügbaren Pakete finden Sie unter http://cygwin.com/packages.
Die Cygwin-Installation ist definitiv bescheidene Software. Wenn Sie entscheiden, dass das nichts für Sie ist, oder wenn Sie einige installierte Pakete entfernen wollen, können Sie die Pakete einfach aus dem Verzeichnis löschen, das Sie für Pakete angegeben haben, oder das Cygwin-Hauptverzeichnis (so etwas wie C:cygwin) einfach komplett löschen.

Die Rails-Entwicklung mit Mongrel beschleunigen

Sie möchten an Ihrem Rails-Projekt im Entwicklungsmodus arbeiten und etwas Schnelleres verwenden als den fest eingebauten Webserver WEBrick.

Lösung

Eine ausgezeichnete Alternative zu WEBrick ist Mongrel. Mongrel ist deutlich schneller als WEBrick und wesentlich einfacher zu installieren als die LightTPD/FastCGI-Kombination. Sie benötigen eine funktionierende Build-Umgebung, um Mongrel unter Linux oder Mac OS X installieren zu können. Windows-Nutzer erhalten ein vorkompiliertes Gem. Nutzer Debian-basierter Linux-Distributionen müssen die ruby-dev– und build-essential-Pakete installiert haben, und Mac OS X-Nutzer müssen Apples XCode-Tools installiert haben. Sobald alle Voraussetzungen erfüllt sind, installieren Sie Mongrel mit Hilfe von RubyGems:

$ sudo gem install mongrel
 
Dann starten Sie Mongrel im Stammverzeichnis der Anwendung als Daemon (als Hintergrundprozess):
$ mongrel_rails start -d
 

Ihre Anwendung ist nun an Port 3000 verfügbar, genau wie bei der WEBrick-Standardeinstellung (http://localhost:3000). Um den Server anzuhalten, geben Sie Folgendes ein:

$ mongrel_rails stop
 

Diskussion

Mongrel ist ein schneller Webserver. Er wurde in Ruby geschrieben (mit einigen C-Erweiterungen). Er ist einfach zu installieren und kann als einfacher Entwicklungsserver dienen. Er kann für größere Produktionsanwendungen aber auch hinter einem Load-Balancer geclustert werden. Mongrel kann auch mit anderen Ruby-Frameworks, wie etwa Og+Nitro und Camping, verwendet werden, ist aber für den Einsatz von Rails-Anwendungen besonders populär. Es ist sehr wahrscheinlich, das script/server in naher Zukunft neben WEBrick und LightTPD auch Mongrel unterstützen wird.

Die Lösung zeigt Mongrel als Daemon-Prozess. Sie können ihn auch im Vordergrund ausführen, erhalten aber nicht die gleichen nützlichen Ausgaben wie bei WEBrick. Um diese Informationen zu erhalten, geben Sie den folgenden Befehl ein:
tail -f log/development.log
 
Die Installation des Mongrel-Plugins fügt den Befehl mongrel_rails in Ihren Pfad ein. Für eine Liste der verfügbaren Optionen geben Sie nur den Befehl ein:
$ mongrel_rails
 
Usage: mongrel_rails <command> [options]

Available commands are:

 - restart

 - start

 - stop



 
Each command takes -h as an option to get help.
 
Mongrel besitzt seinen eigenen Satz von Plugins. Ihre Ausgabe kann anders aussehen, je nachdem, welche Mongrel-Plugins installiert wurden (etwa mongrel_status und mongrel_cluster). Mit dem grundlegenden Mongrel-Gem verfügen Sie über start, stop und restart.

Eine vollständige Liste der Optionen des start-Befehls erhalten Sie mit -h:
$ mongrel_rails start -h
 
Usage: mongrel_rails <command> [options]

    -e, --environment ENV            Rails environment to run as

    -d, --daemonize                  Whether to run in the background or 

                                     not

    -p, --port PORT                  Which port to bind to

    -a, --address ADDR               Address to bind to

    -l, --log FILE                   Where to write log messages

    -P, --pid FILE                   Where to write the PID

    -n, --num-procs INT              Number of processors active before 

                                     clients denied

    -t, --timeout TIME               Timeout all requests after 100th 

                                     seconds time

    -m, --mime PATH                  A YAML file that lists additional 

                                     MIME types

    -c, --chdir PATH                 Change to dir before starting 

                                     (will be expanded) -r, --root PATH

                                     Set the document root (default 

                                     'public')

    -B, --debug                      Enable debugging mode

    -C, --config PATH                Use a config file

    -S, --script PATH                Load the given file as an extra 

                                     config script.

    -G, --generate CONFIG            Generate a config file for -C

        --user USER                  User to run as

        --group GROUP                Group to run as

    -h, --help                       Show this message

         --version                   Show version

 
Wenn Sie mit Windows arbeiten, können Sie Mongrel einfach als Dienst konfigurieren:
$ mongrel_rails_service install -n blog -r c:datablog 
 
                                -p 4000 -e production
 
Sie starten den Dienst dann mit:
$ mongrel_rails_service start -n blog
 
Sie können den Dienst sogar über die Verwaltung in der Systemsteuerung pflegen.

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

Vortrag und Diskussion mit Denny Carl und Sascha Kersken

Wenige Monate vor der RailsConf Europe, die Anfang September zum zweiten Mal in Berlin stattfindet, führen die Fachbuchautoren Denny Carl und Sascha Kersken in die moderne Form der Webprogrammierung mit Ruby und Ruby on Rails ein und zeigen auf, wie schnell komplexe Webprojekte mithilfe dieser Werkzeuge zu realisieren sind. Sie gehen dabei besonders auf die Arbeitsweise von Ruby on Rails ein, die dem Programmierer bestimmte Schritte vorgeben.

Dabei ziehen die Vortragenden auch mit anderen Programmiersprachen Vergleiche und geben Rat für umsteigewillige Programmierer. Seit Dezember 2007 gibt es das Framework Ruby on Rails in Version 2.0, an Ruby 2.0 gerade gearbeitet – klar, dass der Blick in die Zukunft der Webprogrammierung nicht fehlen wird.

Wo:

Hamburg: 21. Mai 2008, Lehmanns Buchhandlung, Kurze Mühren 6

Weitere Details:

http://www.oreilly.de/artikel/2008/05/rubyonrails.html

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

Start der Rails-Rezepte-Serie

Heute beginnen wir mit einer Reihe von Rails-Rezepten in unserem Tutorials-Bereich.

Die Rezepte stammen aus dem deutschsprachingen Rail Kochbuch aus dem O’Reilly Verlag.
Wir möchten uns an dieser Stelle dafür bedanken, dass O’Reilly uns die Rezepte zur Verfügung stellt.

Den Start wird die Rails-Einführung machen und in den nächsten Tagen folgen weiter Auszüge.

Entwickeln mit Rails

2.0 Einführung

Rails ist darauf ausgerichtet, die Webentwicklung produktiver und einträglicher zu machen. Tatsächlich wird behauptet, dass Sie mit Rails bis zu 10-mal produktiver sein können als mit anderen Frameworks. Sie müssen selbst entscheiden, ob Rails einträglicher ist, aber wenn Sie produktiver sind, können Sie mehr Zeit damit verbringen, Sie interessierende Probleme zu lösen, anstatt das Rad ständig neu zu erfinden und Infrastruktur zu schaffen. Die Produktivitätsvorteile erkennen Sie am besten, wenn Sie sich eine komfortable Entwicklungsumgebung schaffen. Ihr primäres Entwicklungswerkzeug wird ein Texteditor oder eine integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) sein. Dieses Werkzeug gut zu beherrschen erlaubt es Ihnen, sich effektiv innerhalb der Quelldateien der Anwendung zu bewegen. Sie benötigen außerdem Werkzeuge, um mit Rails über die Kommandozeile kommunizieren zu können, d.h., Sie müssen eine geeignete Terminal- oder Konsolenanwendung auswählen.
Dieses Kapitel enthält Rezepte, die Ihnen dabei helfen, Ihre Rails-Entwicklungsumgebung auszuwählen und den Ausgangspunkt einer Rails-Anwendung anzulegen. Wir behandeln auch einige hilfreiche Lösungen für gängige Probleme, denen man bei der Rails-Entwicklung häufig begegnet, etwa zur Generierung der Ruby-Dokumentation (RDoc) für Ihre Anwendung oder zur Entwicklung mit dem aktuellsten Rails (Edge Rails).

Sobald Sie bereit sind, neue Rails-Projekte anzulegen und zu bearbeiten, und alle Entwicklungs-Tools am richtigen Platz sind, können Sie damit beginnen herauszufinden, was Ihnen das Framework zu bieten hat.

2.1 Ein Rails-Projekt anlegen

Problem

Sie haben Rails auf Ihrem System installiert und wollen Ihr erstes Rails-Projekt anlegen.

Lösung

Wir gehen davon aus, dass Sie Ruby, RubyGems, Rails und eine der von Rails unterstützten Datenbanken (MySQL ist am weitesten verbreitet; PostgreSQL ist weniger populär, aber eine ausgezeichnete Wahl) installiert haben. Um eine neue Rails-Anwendung anzulegen, führen Sie den Befehl rails aus und übergeben ihm den Pfad auf die neue Anwendung als Argument. Um Ihre neue Anwendung zum Beispiel unter /var/www/cookbook anzulegen (wobei das cookbook-Verzeichnis noch nicht existiert), geben Sie den folgenden Befehl in einem Terminal-Fenster ein:

$ rails /var/www/cookbook
 
Der rails-Befehl legt das Verzeichnis für Ihr Projekt mit dem von Ihnen angegebenen Pfad an. Er erzeugt außerdem eine Reihe von Unterverzeichnissen, die den Projektcode nach der Funktion organisieren, die er innerhalb der MVC-Umgebung übernimmt. Der rails-Befehl kennt darüber hinaus verschiedene Kommandozeilenoptionen. Diese können Sie sich ansehen, indem Sie Folgendes eingeben:
$ rails --help
 
Die wichtigste dieser Optionen ist –database=database_type, wobei database_type einer der folgenden sein kann: mysql, oracle, postgresql, sqlite2 oder sqlite3. Um beispielsweise PostgreSQL anstelle der Standard-Datenbank (MySQL) zu verwenden, geben Sie den folgenden Befehl ein:

$ rails /var/www/cookbook --database=postgresql
 

Diskussion

Nachdem Sie ein Projekt mit Rails angelegt haben, sollten Sie sich die Struktur der generierten Verzeichnisse sowie die erzeugten Dateien ansehen. Ihr neues Rails-Projekt enthält eine nette README-Datei, die die Rails-Grundlagen beschreibt, etwa wie man an die Dokumentation gelangt, Rails debuggt, die Rails-Konsole, Breakpunkte und vieles mehr.
Ein neues Rails-Projekt enthält die folgenden Verzeichnisse:
app
enthält den gesamten anwendungsspezifischen Code dieser Anwendung. Der größte Teil der Rails-Entwicklung findet innerhalb des app-Verzeichnisses statt.
app/controllers
enthält die Controller-Klassen, die alle von ActionController::Base erben. Jede dieser Dateien sollte nach dem Modell benannt werden, das sie kontrollieren, gefolgt von _controller.rb (z.B. cookbook_controller.rb), damit ein automatisches Abbilden der URLs möglich ist.

app/models
enthält die Modelle, deren Namen die Form cookbook.rb haben sollten. Die Modellklassen erben größtenteils von ActiveRecord::Base.

app/views

enthält die Template-Dateien für den View. Der Name muss beispielsweise cookbook/index.rhtml für die Aktion CookBookController#index lauten. Alle Views verwenden die eRuby-Syntax. Dieses Verzeichnis kann auch Stylesheets, Images und so weiter enthalten. Diese können über symbolische Links mit public verbunden werden.

app/helpers
enthält View-Helper. Die Namen sollten die Form weblog_helper.rb aufweisen.
app/apis

enthält API-Klassen für Webdienste.
config
enthält Konfigurationsdateien für die Rails-Umgebung, die Routing-Map, die Datenbank und andere Abhängigkeiten.

components

enthält eigenständige Mini-Anwendungen, die Controller, Modelle und Views bündeln.
db
enthält das Datenbankschema in schema.rb. db/migrate enthält die Folge von Migrations für Ihr Schema.

lib
enthält anwendungsspezifische Bibliotheken – d.h. grundsätzlich jede Art von eigenem Code, der nicht unter Controller, Modelle oder Helfer fällt. Dieses Verzeichnis liegt im Ladepfad.
public

Das ist das für jeden verfügbare Verzeichnis. Es enthält Unterverzeichnisse für Images, Stylesheets und JavaScript-Skripten. Es enthält außerdem die Dispatcher und die Standard-HTML-Dateien.

script
enthält Helfer-Skripten für die Automatisierung und Generierung.
test

enthält Unit-Tests und funktionale Tests, zusammen mit Fixtures.
vendor
enthält externe Bibliotheken, von denen die Anwendung abhängig ist. Es enthält auch das Plugins-Unterverzeichnis. Dieses Verzeichnis liegt im Ladepfad.

Rails 2.1 RC steht kurz bevor…

Das erste Release Candidate von Rails 2.1 steht kurz bevor bzw. wird bald offiziell angekündigt.

Diese Nachricht hat David vor wenigen Stunden in seinem Twitter-Feed eingestellt.

Der Eintrag von David kann hier nachgelesen werden:
http://twitter.com/d2h/statuses/808936705

Die neue Rails-Version wird neben Bugfixes auch ein paar Neuerungen mitbringen.

Wir werden in den nächsten Tagen davon berichten.

„Entwickler-Handbuch zu Ruby on Rails 2“ zum Download

Ab sofort steht die aktuelle Auflage des Entwickler-Handbuchs “Ruby on Rails 2” von Hussein Morsy und Tanja Otto als HTML-Version zur Online-Lektüre und zum Download auf der Website von “Galileo Computing” zur Verfügung.

In dem Handbuch werden die zahlreichen und komplexen Möglichkeiten von Ruby on Rails 2 ausführlich und verständlich dargestellt: Von der Installation über die Entwicklung von eigenen Anwendungen bis hin zur Einführung in die verschiedenen Module des Frameworks.

Das Buch bleibt stets praxisbezogen, da Rails anhand mehrerer »Realworld«-Beispiele erläutert wird. Alle Applikationen sind dabei systematisch aufgebaut, von einfachen bis hin zu komplexen Anwendungen. Für alle, die zum ersten Mal mit Ruby arbeiten, enthält das Buch außerdem eine umfassende Einführung in die Programmiersprache.

Der Download beträgt rund 6,7 MB. Da das Buch im HTML-Format vorliegt, ist lediglich ein Browser zum Betrachten nötig. Das 700 Seiten starke Werk kostet im Buchhandel 39,90 Euro (ISBN 978-3-89842-779-1) und ist bei Galileo Computing erschienen.


Links zum Openbook:


Openbook – Ruby on Rails 2

http://www.galileocomputing.de/openbook/ruby_on_rails/

Download-Adresse

http://download.galileo-press.de/openbook/ruby_on_rails/…

Ruby on Rails 2: Das Entwickler-Handbuch (Galileo Computing)

Das erste Handbuch zu Ruby on Rails 2! Die zahlreichen und komplexen Möglichkeiten des Frameworks, das auch im Enterprice-Bereich häufig eingesetzt wird, werden ausführlich behandelt. Dennoch bleibt das Buch stets verständlich und praxisbezogen, da Rails anhand mehrerer “Realworld”-Beispiele erläutert wird. Alle Beispielapplikationen sind dabei systematisch aufgebaut: von einer einfachen bis zu einer komplexen Anwendung inklusive TestDrivenDevelopment.

Tipps und Tricks, eine umfassende Befehlsreferenz und eine Einführung in die Sprache Ruby lassen dann keine Wünsche mehr offen.

  • Taschenbuch: 699 Seiten
  • Verlag: (2008-03-01 )
  • Preis:
  • Sprache: german
  • ISBN-10: 389842779X
  • Autor(en): Hussein Morsy, Tanja Otto
  • kaufen