Guides.rubyonrails.org

Dieses Tutorial setzt grundlegende Rails-Kenntnisse aus dem Getting Started with Rails Guide voraus.

Dieses Tutorial basiert auf Rails 3.0. Einige der hier gezeigten Codes werden in früheren Versionen von Rails nicht funktionieren.

1 Grundlagen der Kommandozeile

Es gibt ein paar Befehle, die für den täglichen Gebrauch von Rails absolut entscheidend sind. In der Reihenfolge, wie oft du sie wahrscheinlich benutzen wirst, sind sie:

  • rails console
  • rails server
  • rake
  • rails generate
  • rails dbconsole
  • rails new app_name

Lassen Sie uns eine einfache Rails-Anwendung erstellen, um jeden dieser Befehle im Kontext durchzugehen.

1.1 rails new

Zunächst wollen wir eine neue Rails-Anwendung erstellen, indem wir nach der Installation von Rails den Befehl rails new ausführen.

Sie können das Rails-Gem installieren, indem Sie gem install rails eingeben, wenn Sie es nicht bereits haben. Folgen Sie den Anweisungen in den Rails 3 Release Notes

$ rails new commandsapp create create README.rdoc create .gitignore create Rakefile create config.ru create Gemfile create app ... create tmp/cache create tmp/pids create vendor/plugins create vendor/plugins/.gitkeep

Rails wird Sie mit einer riesigen Menge an Material für einen so kleinen Befehl ausstatten! Sie haben jetzt die gesamte Rails-Verzeichnisstruktur mit dem gesamten Code, den Sie brauchen, um unsere einfache Anwendung sofort auszuführen.

1.2 rails server

Der Befehl rails server startet einen kleinen Webserver namens WEBrick, der mit Ruby gebündelt wird. Sie werden ihn immer dann verwenden, wenn Sie über einen Webbrowser auf Ihre Anwendung zugreifen wollen.

WEBrick ist nicht die einzige Option, um Rails zu bedienen. Dazu kommen wir später.

Mit nur drei Befehlen haben wir einen Rails-Server aufgesetzt, der auf Port 3000 lauscht. Gehen Sie zu Ihrem Browser und öffnen Sie http://localhost:3000. Sie werden sehen, dass eine einfache Rails-Anwendung läuft.

Sie können auch den Alias „s“ verwenden, um den Server zu starten: rails s.

Der Server kann mit der Option -p auf einem anderen Port ausgeführt werden. Die Standardentwicklungsumgebung kann mit -e geändert werden.

$ rails server -e production -p 4000

Die Option -b bindet Rails an die angegebene IP, standardmäßig ist es 0.0.0.0. Sie können einen Server als Daemon laufen lassen, indem Sie die Option -d übergeben.

1.3 rails generate

Der Befehl rails generate verwendet Vorlagen, um eine ganze Menge Dinge zu erstellen. Wenn Sie rails generate selbst ausführen, erhalten Sie eine Liste der verfügbaren Generatoren:

Sie können auch den Alias „g“ verwenden, um den Generator-Befehl aufzurufen: rails g.

Sie können weitere Generatoren über Generator-Gems installieren, Teile von Plugins, die Sie zweifellos installieren werden, und Sie können sogar Ihre eigenen erstellen!

Die Verwendung von Generatoren spart Ihnen viel Zeit beim Schreiben von Boilerplate-Code, also Code, der für das Funktionieren der App notwendig ist.

Lassen Sie uns unseren eigenen Controller mit dem Controller-Generator erstellen. Aber welchen Befehl sollen wir verwenden? Fragen wir den Generator:

Alle Rails-Konsolen-Dienstprogramme haben einen Hilfetext. Wie bei den meisten *nix-Utilities kann man versuchen, –help oder -h am Ende hinzuzufügen, zum Beispiel rails server –help.

Der Controller-Generator erwartet Parameter in der Form generate controller ControllerName action1 action2. Erzeugen wir einen Greetings-Controller mit einer action von hello, der uns etwas Nettes sagt.

$ rails generate controller Greetings hello create app/controllers/greetings_controller.rb route get "greetings/hello" invoke erb create app/views/greetings create app/views/greetings/hello.html.erb invoke test_unit create test/functional/greetings_controller_test.rb invoke helper create app/helpers/greetings_helper.rb invoke test_unit create test/unit/helpers/greetings_helper_test.rb invoke assets create app/assets/javascripts/greetings.js invoke css create app/assets/stylesheets/greetings.css

Was hat das alles generiert? Es stellte sicher, dass eine Reihe von Verzeichnissen in unserer Anwendung vorhanden waren, und erstellte eine Controller-Datei, eine View-Datei, eine funktionale Testdatei, eine Hilfsdatei für die View, eine Javascript-Datei und eine Stylesheet-Datei.

Schauen Sie sich den Controller an und ändern Sie ihn ein wenig (in app/controllers/greetings_controller.rb):

class GreetingsController < ApplicationController def hello @message = "Hello, how are you today?" endend

Dann den View, um unsere Nachricht anzuzeigen (in app/views/greetings/hello.html.erb):

<h1>A Greeting for You!</h1><p><%= @message %></p>

Starten Sie Ihren Server mit rails server.

$ rails server=> Booting WEBrick...

Stellen Sie sicher, dass Sie keine „Tilde-Backup“-Dateien in app/views/(controller) haben, sonst wird WEBrick nicht die erwartete Ausgabe zeigen. Dies scheint ein Fehler in Rails 2.3.0 zu sein.

Die URL wird http://localhost:3000/greetings/hello.

Rails kommt auch mit einem Generator für Datenmodelle.

Eine Liste der verfügbaren Feldtypen finden Sie in der API-Dokumentation für die Spaltenmethode der Klasse TableDefinition.

Anstatt jedoch direkt ein Modell zu generieren (was wir später tun werden), lassen Sie uns ein Gerüst einrichten. Ein Scaffold in Rails ist ein vollständiger Satz von Modellen, Datenbankmigration für dieses Modell, Controller, um es zu manipulieren, Views, um die Daten anzuzeigen und zu manipulieren, und eine Test-Suite für jeden der oben genannten Punkte.

Wir werden eine einfache Ressource mit dem Namen „HighScore“ einrichten, die unsere höchste Punktzahl bei Videospielen, die wir spielen, verfolgen wird.

Der Generator prüft, ob die Verzeichnisse für Modelle, Controller, Helfer, Layouts, Funktions- und Unit-Tests und Stylesheets vorhanden sind, erstellt die Views, Controller, Modelle und die Datenbankmigration für „HighScore“ (Erstellung der Tabelle „high_scores“ und der Felder), kümmert sich um die Route für die Ressource und erstellt neue Tests für alles.

Die Migration erfordert, dass wir migrieren, d.h. einen Ruby-Code ausführen (der in dieser 20100209025147_create_high_scores.rb lebt), um das Schema unserer Datenbank zu ändern. Welche Datenbank? Die sqlite3-Datenbank, die Rails für uns erstellt, wenn wir den Befehl rake db:migrate ausführen. Wir werden in Kürze mehr über Rake sprechen.

Lassen Sie uns über Unit-Tests sprechen. Unit-Tests sind Code, der Code testet und Aussagen über ihn macht. Bei Unit-Tests nehmen wir einen kleinen Teil des Codes, zum Beispiel eine Methode eines Modells, und testen seine Eingaben und Ausgaben. Unit-Tests sind Ihr Freund. Je eher Sie sich mit der Tatsache abfinden, dass sich Ihre Lebensqualität drastisch erhöht, wenn Sie Ihren Code Unit-Tests unterziehen, desto besser. Ganz im Ernst. Wir werden gleich einen machen.

Lassen Sie uns die Schnittstelle sehen, die Rails für uns erstellt hat.

$ rails server

Gehen Sie zu Ihrem Browser und öffnen Sie http://localhost:3000/high_scores, jetzt können wir neue Highscores erstellen (55.160 bei Space Invaders!)

1.4 rails console

Mit dem console-Befehl können Sie über die Kommandozeile mit Ihrer Rails-Anwendung interagieren. Auf der Unterseite verwendet die Rails-Konsole IRB, wenn Sie also schon einmal damit gearbeitet haben, werden Sie sich sofort zu Hause fühlen. Dies ist nützlich, um schnelle Ideen mit Code zu testen und Daten serverseitig zu ändern, ohne die Website zu berühren.

Sie können auch den Alias „c“ verwenden, um die Konsole aufzurufen: rails c.

Wenn Sie etwas Code testen möchten, ohne Daten zu ändern, können Sie dies tun, indem Sie rails console –sandbox aufrufen.

$ rails console --sandboxLoading development environment in sandbox (Rails 3.1.0)Any modifications you make will be rolled back on exitirb(main):001:0>

1.5 rails dbconsole

rails dbconsole findet heraus, welche Datenbank du verwendest, und lässt dich in die Kommandozeilenschnittstelle fallen, die du mit ihr verwenden würdest (und findet auch die Kommandozeilenparameter heraus, die du ihr geben musst!). Sie unterstützt MySQL, PostgreSQL, SQLite und SQLite3.

Sie können auch den Alias „db“ verwenden, um die dbconsole aufzurufen: rails db.

1.6 rails plugin

Der Befehl rails plugin vereinfacht die Verwaltung von Plugins. Plugins können über ihren Namen oder ihre Repository-URLs installiert werden. Sie müssen Git installiert haben, wenn Sie ein Plugin aus einem Git-Repository installieren wollen. Das gleiche gilt auch für Subversion.

$ rails plugin install https://github.com/technoweenie/acts_as_paranoid.git+ ./CHANGELOG+ ./MIT-LICENSE......

1.7 rails runner

runner führt Ruby-Code im Kontext von Rails nicht-interaktiv aus. Zum Beispiel:

$ rails runner "Model.long_running_method"

Sie können auch den Alias „r“ verwenden, um den Runner aufzurufen: rails r.

Sie können die Umgebung angeben, in der der Runner-Befehl arbeiten soll, indem Sie den Schalter -e verwenden.

$ rails runner -e staging "Model.long_running_method"

1.8 rails destroy

Denken Sie sich destroy als das Gegenteil von generate. Es findet heraus, was generate gemacht hat und macht es rückgängig.

Du kannst auch den Alias „d“ verwenden, um den destroy-Befehl aufzurufen: rails d.

2 Rake

Rake ist Ruby Make, ein eigenständiges Ruby-Dienstprogramm, das das Unix-Dienstprogramm „make“ ersetzt und ein „Rakefile“ und .rake-Dateien verwendet, um eine Liste von Aufgaben zu erstellen. In Rails wird Rake für allgemeine Verwaltungsaufgaben verwendet, insbesondere für komplexe Aufgaben, die aufeinander aufbauen.

Sie können eine Liste der verfügbaren Rake-Aufgaben erhalten, die oft vom aktuellen Verzeichnis abhängt, indem Sie rake –tasks eingeben. Jede Aufgabe hat eine Beschreibung und sollte Ihnen helfen, das zu finden, was Sie brauchen.

$ rake --tasks(in /home/foobar/commandsapp)rake db:abort_if_pending_migrations # Raises an error if there are pending migrationsrake db:charset # Retrieves the charset for the current environment's databaserake db:collation # Retrieves the collation for the current environment's databaserake db:create # Create the database defined in config/database.yml for the current Rails.env......rake tmp:pids:clear # Clears all files in tmp/pidsrake tmp:sessions:clear # Clears all files in tmp/sessionsrake tmp:sockets:clear # Clears all files in tmp/sockets

2.1 about

rake about gibt Informationen über die Versionsnummern von Ruby, RubyGems, Rails, die Rails-Unterkomponenten, den Ordner Ihrer Anwendung, den aktuellen Rails-Umgebungsnamen, den Datenbankadapter Ihrer Anwendung und die Schema-Version. Es ist nützlich, wenn Sie um Hilfe bitten müssen, überprüfen, ob ein Sicherheitspatch Sie betreffen könnte, oder wenn Sie einige Statistiken für eine bestehende Rails-Installation benötigen.

2.2 assets

Sie können die Assets in app/assets mit rake assets:precompile vorkompilieren und diese kompilierten Assets mit rake assets:clean entfernen.

2.3 db

Die häufigsten Aufgaben des db: Rake-Namensraumes sind migrate und create, und es lohnt sich, alle Migrations-Rake-Aufgaben (up, down, redo, reset) auszuprobieren. rake db:version ist bei der Fehlersuche nützlich, da es die aktuelle Version der Datenbank angibt.

Weitere Informationen zu Migrationen finden sich im Migrations-Leitfaden.

2.4 doc

Der doc: Namensraum hat die Werkzeuge, um Dokumentation für Ihre Anwendung, API-Dokumentation, Leitfäden zu erzeugen. Dokumentation kann auch gestrippt werden, was vor allem nützlich ist, um die Codebasis zu verschlanken, z.B. wenn man eine Rails-Anwendung für eine eingebettete Plattform schreibt.

  • rake doc:app generiert Dokumentation für die Anwendung in doc/app.
  • rake doc:guides generiert Rails-Guides in doc/guides.
  • rake doc:rails generiert API-Dokumentation für Rails in doc/api.
  • rake doc:plugins generiert API-Dokumentation für alle in der Anwendung installierten Plugins in doc/plugins.
  • rake doc:clobber_plugins entfernt die generierte Dokumentation für alle Plugins.

2.5 notes

rake notes durchsucht Ihren Code nach Kommentaren, die mit FIXME, OPTIMIZE oder TODO beginnen. Die Suche erfolgt in Dateien mit den Erweiterungen .builder, .rb, .erb, .haml und .slim sowohl für Standard- als auch für benutzerdefinierte Anmerkungen.

Wenn Sie nach einer bestimmten Anmerkung suchen, zum Beispiel FIXME, können Sie rake notes:fixme verwenden. Beachten Sie, dass Sie den Namen der Anmerkung klein schreiben müssen.

Sie können auch benutzerdefinierte Anmerkungen in Ihrem Code verwenden und sie mit rake notes:custom auflisten, indem Sie die Anmerkung mit einer Umgebungsvariablen ANNOTATION angeben.

$ rake notes:custom ANNOTATION=BUG(in /home/foobar/commandsapp)app/model/post.rb: * Have to fix this one before pushing!

Bei der Verwendung von spezifischen Anmerkungen und benutzerdefinierten Anmerkungen wird der Name der Anmerkung (FIXME, BUG usw.) in den Ausgabezeilen nicht angezeigt.

2.6 routes

rake routes listet alle Ihre definierten Routen auf, was nützlich ist, um Routing-Probleme in Ihrer App aufzuspüren, oder Ihnen einen guten Überblick über die URLs in einer App zu geben, mit der Sie sich vertraut machen wollen.

2.7 test

Eine gute Beschreibung von Unit-Tests in Rails finden Sie in A Guide to Testing Rails Applications

Rails wird mit einer Test-Suite namens Test::Unit ausgeliefert. Rails verdankt seine Stabilität dem Einsatz von Tests. Die Aufgaben, die im test: Namespace verfügbar sind, helfen bei der Ausführung der verschiedenen Tests, die Sie hoffentlich schreiben werden.

2.8 tmp

Das Rails.root/tmp-Verzeichnis ist, wie das *nix /tmp-Verzeichnis, der Aufbewahrungsort für temporäre Dateien wie Sessions (wenn Sie einen Dateispeicher für Dateien verwenden), Prozess-ID-Dateien und zwischengespeicherte Aktionen.

Die tmp: Namespace-Aufgaben werden Ihnen helfen, das Rails.root/tmp-Verzeichnis zu löschen:

2.9 Verschiedenes

  • rake stats ist großartig, um Statistiken über deinen Code zu betrachten, die Dinge wie KLOCs (Tausende von Codezeilen) und dein Code-zu-Test-Verhältnis anzeigen.
  • rake secret gibt dir einen Pseudo-Zufallsschlüssel, den du für dein Sitzungsgeheimnis verwenden kannst.
  • rake time:zones:all listet alle Zeitzonen auf, die Rails kennt.

3 Die fortgeschrittene Kommandozeile von Rails

Bei der fortgeschrittenen Nutzung der Kommandozeile geht es darum, nützliche (manchmal sogar überraschende) Optionen in den Dienstprogrammen zu finden und diese an die eigenen Bedürfnisse und den spezifischen Arbeitsablauf anzupassen. Hier sind einige Tricks aus dem Ärmel von Rails aufgelistet.

3.1 Rails mit Datenbanken und SCM

Wenn Sie eine neue Rails-Anwendung erstellen, haben Sie die Möglichkeit, die Art der Datenbank und das Quellcode-Verwaltungssystem anzugeben, das Ihre Anwendung verwenden soll. Das wird Ihnen einige Minuten und sicherlich viele Tastenanschläge ersparen.

Lassen Sie uns sehen, was eine –git Option und eine –database=postgresql Option für uns tun wird:

Wir mussten das gitapp Verzeichnis erstellen und ein leeres git Repository initialisieren, bevor Rails die erstellten Dateien zu unserem Repository hinzufügen konnte. Schauen wir uns an, was es in unsere Datenbankkonfiguration eingefügt hat:

Es hat auch einige Zeilen in unserer database.yml-Konfiguration erzeugt, die unserer Wahl von PostgreSQL als Datenbank entsprechen.

Der einzige Haken bei der Verwendung der SCM-Optionen ist, dass man zuerst das Verzeichnis der Anwendung erstellen muss, dann den SCM initialisieren muss und dann den Befehl rails new ausführen kann, um die Basis der Anwendung zu generieren.

3.2 Server mit verschiedenen Backends

Viele Leute haben eine große Anzahl von verschiedenen Webservern in Ruby erstellt, und viele von ihnen können verwendet werden, um Rails auszuführen. Seit Version 2.3 verwendet Rails Rack, um seine Webseiten zu bedienen, was bedeutet, dass jeder Webserver, der einen Rack-Handler implementiert, verwendet werden kann. Dazu gehören WEBrick, Mongrel, Thin und Phusion Passenger (um nur einige zu nennen!).

Für weitere Details zur Rack-Integration siehe Rails on Rack.

Um einen anderen Server zu verwenden, installieren Sie einfach dessen Gem und verwenden Sie dessen Namen für den ersten Parameter von rails server:

Feedback

Sie können gerne helfen, die Qualität dieses Handbuchs zu verbessern.

Wenn Sie Tippfehler oder sachliche Fehler sehen, die Sie sich zutrauen zu patchen, klonen Sie bitte das Rails-Repository und öffnen Sie eine neue Pull-Anfrage. Sie können auch um Commit-Rechte auf docrails bitten, wenn Sie vorhaben, mehrere Patches einzureichen. Commits werden geprüft, aber das geschieht erst, nachdem Sie Ihren Beitrag eingereicht haben. Dieses Repository wird in regelmäßigen Abständen mit dem Master-Repository zusammengeführt.

Es kann auch sein, dass Sie unvollständige oder nicht mehr aktuelle Inhalte finden. Bitte ergänze die fehlende Dokumentation für Master. Beachte die Ruby on Rails Guides Guidelines für Stil und Konventionen.

Wenn du aus irgendeinem Grund etwas entdeckst, das du reparieren musst, es aber nicht selbst tun kannst, eröffne bitte ein Problem.

Und zu guter Letzt ist jede Art von Diskussion über die Ruby on Rails Dokumentation in der rubyonrails-docs Mailingliste sehr willkommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.