Ruby on Rails 3.1 (eBook) - Hussein Morsy, Tanja Otto

Tanja Otto Hussein Morsy 

Ruby on Rails 3.1 (eBook)

Installation, Programmierung, Praxisbeispiele. Inkl. Einführung in Ruby und MVC, Testen mit Cucumber, Deployment auf Heroku

eBook
 
Ob und wann dieser Artikel wieder vorrätig sein wird, ist unbekannt
Nicht lieferbar
Bewerten Empfehlen Merken Auf Lieblingsliste


Andere Kunden interessierten sich auch für

Ruby on Rails 3.1 (eBook)

Das erste und umfassendste Handbuch zu Ruby on Rails 3! Einiges hat sich getan: Rails 3 integriert das Ruby-Framework »Merb« und erweitert damit enorm sein Potenzial. Die neue Version bietet so eine viel grössere Flexibilität bei der Wahl des Datenbank-, Test- und Template-Frameworks. Die zahlreichen und komplexen Möglichkeiten des Frameworks werden ausführlich behandelt. Dabei bleibt das Buch stets verständlich und praxisbezogen, da Rails anhand mehrerer »Realworld«-Beispiele anschaulich 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.


Produktinformation

  • Deutsch
  • ISBN-13: 9783836214902
  • ISBN-10: 3836214903
  • Best.Nr.: 34825401

Inhaltsangabe

1;Auf einen Blick;4 2;Inhalt;6 3;Einleitung;18 4;1 Einführung;22 4.1;1.1 Wie entstand Rails?;22 4.2;1.2 Warum Ruby?;23 4.3;1.3 Model View Controller;24 4.4;1.4 Persistenz;25 4.5;1.5 Konvention statt Konfiguration;26 4.6;1.6 Das DRY-Prinzip;26 4.7;1.7 Neues in Rails 3.0;27 4.8;1.8 Neues in Rails 3.1;29 4.9;1.9 Top-Ten-Websites zu Ruby on Rails;31 5;2 Installation;34 5.1;2.1 Allgemeines;34 5.2;2.2 Installation unter MacOS X;35 5.2.1;2.2.1 Compiler installieren;36 5.2.2;2.2.2 Paketmanager Homebrew;36 5.2.3;2.2.3 Datenbanken installieren;38 5.2.4;2.2.4 Ruby installieren mit »rbenv«;38 5.2.5;2.2.5 Rails installieren;41 5.3;2.3 Installation unter Windows;41 5.4;2.4 Installation unter Linux;42 5.4.1;2.4.1 Basisinstallation mit »apt-get«;42 5.4.2;2.4.2 Datenbanken installieren;43 5.4.3;2.4.3 Installation von »rbenv«;43 5.5;2.5 Editoren und Entwicklungsumgebungen;44 5.5.1;2.5.1 TextMate;44 5.5.2;2.5.2 Sublime Text;44 5.5.3;2.5.3 Vim;45 5.5.4;2.5.4 Emacs;45 5.5.5;2.5.5 IntelliJ IDEA und RubyMine;45 5.5.6;2.5.6 Aptana;46 5.5.7;2.5.7 Visual Studio;46 6;3 Unsere erste Rails-Applikation;48 6.1;3.1 Eine Rails-Applikation erstellen;48 6.2;3.2 Der lokale Rails-Server;49 6.3;3.3 Grundgerüst mit Scaffolds erstellen;51 6.4;3.4 Die Applikation im Browser aufrufen;52 6.5;3.5 Startseite festlegen;55 6.6;3.6 HTTP-Authentifizierung;55 7;4 Einführung in Ruby;58 7.1;4.1 Was ist Ruby?;58 7.1.1;4.1.1 Geschichte;58 7.1.2;4.1.2 Eigenschaften;59 7.1.3;4.1.3 Compiler oder Interpreter?;60 7.1.4;4.1.4 Ruby-Versionen;60 7.2;4.2 Ruby-Code ausführen;61 7.2.1;4.2.1 Quelltext;61 7.2.2;4.2.2 Interaktive Ruby Shell – »irb«;61 7.2.3;4.2.3 Im Webbrowser: Try Ruby;63 7.3;4.3 Grundlagen;64 7.3.1;4.3.1 Syntax;64 7.3.2;4.3.2 Variablen;65 7.3.3;4.3.3 Objekte und Datentypen;66 7.3.4;4.3.4 Eine Frage des Stils;71 7.4;4.4 Kontrollstrukturen;72 7.4.1;4.4.1 Verzweigungen;72 7.4.2;4.4.2 Mehrfachverzweigungen;74 7.4.3;4.4.3 Rubys eigene Logik: true und false;75 7.4.4;4.4.4 Schleifen;76 7.4.5;4.4.5 Iteratoren;77 7.5;4.5 Klassen;78 7.5.1;4.5.1 Klassen definieren;78 7.5.2;4.5.2 Automatische Accessoren;80 7.5.3;4.5.3 Initialisieren von Objekten;80 7.5.4;4.5.4 Zugriff auf Methoden;81 7.5.5;4.5.5 Parameter;82 7.5.6;4.5.6 Operatoren sind Methoden;84 7.5.7;4.5.7 Konstanten in Klassen;85 7.5.8;4.5.8 Klassenmethoden;86 7.5.9;4.5.9 Sichtbarkeit;87 7.5.10;4.5.10 Vererbung;88 7.6;4.6 Module;90 7.6.1;4.6.1 Namensräume;90 7.6.2;4.6.2 Mixins;91 8;5 Rails Schritt für Schritt entdecken;94 8.1;5.1 Rails-Projekt erstellen;95 8.1.1;5.1.1 Erstellung des Bookmarks-Controllers;96 8.1.2;5.1.2 View erstellen;100 8.2;5.2 Weitere Views anlegen;101 8.3;5.3 Layout;103 8.4;5.4 Model;108 8.4.1;5.4.1 Migration;110 8.4.2;5.4.2 ActiveRecord;112 8.4.3;5.4.3 Datenbankzugriff in der Konsole testen;112 8.5;5.5 CRUD (Create, Read, Update, Delete);117 8.6;5.6 Fehlerbehandlung in Formularen;133 8.7;5.7 Flash-Messages;136 8.8;5.8 Refaktorisierung mit Helper und Partials;139 8.8.1;5.8.1 Helper;139 8.8.2;5.8.2 Partials;142 8.9;5.9 Authentifizierung;144 8.10;5.10 Jeder User hat seine eigenen Bookmarks;154 8.11;5.11 Mehrsprachigkeit mit I18n;159 9;6 Testen mit Cucumber;170 9.1;6.1 Test Driven Development;170 9.1.1;6.1.1 Was ist Cucumber?;172 9.2;6.2 Eine Beispielapplikation;172 9.2.1;6.2.1 Generierung der Cucumber-Dateien;173 9.2.2;6.2.2 Feature anlegen;173 9.2.3;6.2.3 Erweiterungen;190 10;Rails-Projekte erstellen und konfigurieren;192 10.1;7.1 Generieren eines Rails-Projektes;192 10.1.1;7.1.1 Verzeichnisstruktur einer Rails-Applikation;193 10.1.2;7.1.2 Datenbankoptionen;196 10.1.3;7.1.3 JavaScript-Framework-Optionen;198 10.1.4;7.1.4 Skip-Optionen;199 10.1.5;7.1.5 Sonstige Optionen;200 10.1.6;7.1.6 EdgeRails;201 10.1.7;7.1.7 Rails-Projekte mit einer Vorlage generieren;201 10.2;7.2 RubyGems managen mit Bundler;203 10.2.1;7.2.1 RubyGems installieren;203 10.2.2;7.2.2 Gemfile;204 10.2.3;7.2.3 Bundler;206 10.3;7.3 Konfiguration von Rails-Applikationen;208 10.3.1;7.3.1 »application.rb«;208 10.3.2;7.3.2 Initializers;209 10.3.3;7.3.3 Umgebungseinstellungen;211 10.3.4;7.3.4 Datenbankkonfiguration;213 10.4;7.4 Rails-Applikationen ausführen;216 10.4.1;7.4.1 Lokaler Server;216 10.4.2;7.4.2 Rails-Konsole;217 10.4.3;7.4.3 Logging;218 10.4.4;7.4.4 Debugging;219 10.5;7.5 Rake-Tasks;221 10.5.1;7.5.1 Rake-Tasks ausführen;222 10.5.2;7.5.2 Rake-Tasks im Überblick;222 10.5.3;7.5.3 Eigene Rake-Tasks erstellen;226 10.6;7.6 Versionsverwaltung;228 10.6.1;7.6.1 Ein Rails-Projekt mit Git verwalten;229 10.6.2;7.6.2 Ignorieren von Dateien und Verzeichnissen;230 10.6.3;7.6.3 Git-Befehle;230 10.6.4;7.6.4 GitHub;231 10.7;7.7 Generatoren;232 10.7.1;7.7.1 Verwendung;232 10.7.2;7.7.2 Übersicht aller Generatoren;233 10.7.3;7.7.3 Rückgängig machen;238 10.7.4;7.7.4 Generatoren konfigurieren;238 11;8 Datenbankzugriff mit ActiveRecord;240 11.1;8.1 Einführung;240 11.1.1;8.1.1 Vor- und Nachteile;242 11.1.2;8.1.2 Unterstützte Datenbanksysteme;243 11.1.3;8.1.3 Erstellen und Löschen von Datenbanken;244 11.1.4;8.1.4 Ein erstes Beispiel;245 11.1.5;8.1.5 Tabelle erstellen;246 11.2;8.2 Generatoren;250 11.2.1;8.2.1 Übersicht;251 11.2.2;8.2.2 Model-Generator-Beispiel;252 11.3;8.3 Datenbankschema und Migrationen;254 11.3.1;8.3.1 Migration-Skripte;256 11.3.2;8.3.2 Namenskonvention;259 11.3.3;8.3.3 Änderungen ausführen;260 11.3.4;8.3.4 Änderungen rückgängig machen;260 11.3.5;8.3.5 Schnappschuss eines Datenbankschemas;261 11.3.6;8.3.6 Datentypen in Migrationen;263 11.3.7;8.3.7 Tabellenfelder verwalten;263 11.3.8;8.3.8 Tabellen verwalten;265 11.3.9;8.3.9 Indizes verwalten;266 11.3.10;8.3.10 SQL-Befehle direkt verwenden;267 11.4;8.4 Getter- und Setter-Methoden;267 11.4.1;8.4.1 Überschreiben der Getter- und Setter-Methoden;269 11.4.2;8.4.2 Eigene Methoden;269 11.5;8.5 Erstellen, bearbeiten und löschen;270 11.5.1;8.5.1 Neues ActiveRecord-Objekt erstellen;270 11.5.2;8.5.2 Objekt erstellen und direkt speichern;270 11.5.3;8.5.3 Aktualisieren von Objekten;272 11.5.4;8.5.4 Löschen von Objekten;272 11.6;8.6 Validierung;273 11.6.1;8.6.1 »acceptance«;275 11.6.2;8.6.2 »validates_associated«;275 11.6.3;8.6.3 »confirmation«;276 11.6.4;8.6.4 »exclusion«;276 11.6.5;8.6.5 »inclusion«;277 11.6.6;8.6.6 »format«;277 11.6.7;8.6.7 »length«;277 11.6.8;8.6.8 »numericality«;278 11.6.9;8.6.9 »presence«;279 11.6.10;8.6.10 »uniqueness«;279 11.6.11;8.6.11 »validates_each«;280 11.6.12;8.6.12 Validierungsoptionen;280 11.6.13;8.6.13 Selbstdefinierte Validierungen;281 11.7;8.7 Suchen;281 11.7.1;8.7.1 Suche nach IDs;282 11.7.2;8.7.2 Suchmethoden im Überblick;283 11.7.3;8.7.3 Suchbedingung (»where«);287 11.7.4;8.7.4 Sortierreihenfolge (»order«);290 11.7.5;8.7.5 Limitieren der Suchergebnisse (»limit«, »offset«);291 11.7.6;8.7.6 Statistische Berechnungen;291 11.7.7;8.7.7 Suchen mit dynamischen »find«-Methoden;292 11.7.8;8.7.8 Suche über SQL;294 11.7.9;8.7.9 Selbstdefinierte Suchmethoden (Scope);294 11.8;8.8 Assoziationen;297 11.8.1;8.8.1 Eins-zu-viele-Assoziationen (1:n);297 11.8.2;8.8.2 Eins-zu-eins-Assoziationen (1:1);305 11.8.3;8.8.3 Viele-zu-viele-Assoziationen (n:m);308 11.8.4;8.8.4 Polymorphe Assoziationen;314 11.8.5;8.8.5 Mehrere Assoziationen zum gleichen Model;318 11.8.6;8.8.6 Assoziationen mit Bedingungen;319 11.8.7;8.8.7 Eine Assoziation, um eigene Methoden erweitern;322 11.8.8;8.8.8 SQL-Abfragen reduzieren mit »includes«;322 11.8.9;8.8.9 Komplexe Suchabfragen mit »joins«;323 11.9;8.9 Callbacks;325 11.10;8.10 Vererbung;327 12;9 Steuerzentrale mit ActionController;332 12.1;9.1 Grundlagen;332 12.2;9.2 Aufgaben des Controllers;334 12.2.1;9.2.1 Daten aus HTTP-Anfragen empfangen;334 12.2.2;9.2.2 Datenbankabfragen über Model-Klassen;336 12.2.3;9.2.3 Setzen und Abfragen von Cookies;337 12.2.4;9.2.4 Setzen und Abfragen von Sessions;338 12.2.5;9.2.5 Templates aufrufen;339 12.2.6;9.2.6 Setzen von Flash-Messages;341 12.2.7;9.2.7 Weiterleitungen;344 12.2.8;9.2.8 Senden von Dateien und Daten;345 12.2.9;9.2.9 Authentifizierung;346 12.3;9.3 Filter;348 12.3.1;9.3.1 Filtertypen;348 12.3.2;9.3.2 Filter nur auf bestimmte Actions anwenden;350 13;10 Routing mit ActionDispatch;352 13.1;10.1 Routing-Grundlagen;352 13.1.1;10.1.1 Elementare Routing-Einträge;352 13.1.2;10.1.2 Bedingungen definieren mit »constraints«;355 13.1.3;10.1.3 Weiterleitungen;355 13.1.4;10.1.4 Die »root«-Route;355 13.2;10.2 Routing mit Ressourcen;356 13.2.1;10.2.1 Der REST-Standard;356 13.2.2;10.2.2 Ressourcen mit Generatoren erstellen;358 13.2.3;10.2.3 Routing für Ressourcen;358 13.2.4;10.2.4 Verschachtelte Ressourcen;360 13.2.5;10.2.5 Namespaces;363 13.2.6;10.2.6 Singuläre Ressourcen;365 13.2.7;10.2.7 Ressourcen erweitern;368 14;11 HTML5, Sass und CoffeeScript mit ActionView;372 14.1;11.1 ERB-Templates;373 14.2;11.2 Erstellung von Templates;375 14.3;11.3 Helper;376 14.3.1;11.3.1 Helper für Verlinkungen;377 14.3.2;11.3.2 Helper zur Zahlenformatierung;384 14.3.3;11.3.3 Helper zur Textmanipulation;389 14.3.4;11.3.4 Helper zur Entfernung von HTML-Code;392 14.3.5;11.3.5 Sonstige Helper;393 14.3.6;11.3.6 Eigene Helper entwickeln;395 14.4;11.4 Layouts;396 14.4.1;11.4.1 Mehrere »yield«-Bereiche;397 14.4.2;11.4.2 Verschachtelte Layouts;399 14.4.3;11.4.3 Layouts im Controller festlegen;399 14.5;11.5 Formulare;400 14.5.1;11.5.1 Formulare mit Bezug zu einem Model;400 14.5.2;11.5.2 Validierung;422 14.5.3;11.5.3 Formulare mit Bezug zu mehr als einem Model;424 14.5.4;11.5.4 Formulare ohne Bezug zu einem Model;426 14.6;11.6 Partials;429 14.6.1;11.6.1 Übergabe von Variablen mit »locals«;432 14.6.2;11.6.2 Shared Partials;433 14.6.3;11.6.3 Layout-Partials;434 14.7;11.7 Haml als alternatives Template-System;434 14.8;11.8 Asset Pipeline;435 14.8.1;11.8.1 Asset-Verzeichnisse;436 14.8.2;11.8.2 Bilder einbinden;437 14.8.3;11.8.3 Stylesheets und JavaScripts einbinden;438 14.9;11.9 Stylesheets mit Sass;441 14.9.1;11.9.1 Verschachtelung;442 14.9.2;11.9.2 Variablen;442 14.9.3;11.9.3 Vererbung;443 14.9.4;11.9.4 Mixins;444 14.10;11.10 JavaScript mit CoffeeScript;445 15;12 E-Mails senden mit ActionMailer;448 15.1;12.1 Beispielprojekt: Kontaktformular;448 15.2;12.2 HTML-E-Mails;460 15.3;12.3 Layouts;461 15.4;12.4 E-Mails mit Anhängen;462 15.5;12.5 Konfiguration;464 16;13 Nützliche Helfer mit ActiveSupport;466 16.1;13.1 Zahlen;467 16.1.1;13.1.1 Vielfaches;467 16.1.2;13.1.2 Ordinalzahlen;467 16.1.3;13.1.3 Rundungen;468 16.1.4;13.1.4 Kapazitätseinheiten;468 16.1.5;13.1.5 Datum und Zeit;469 16.2;13.2 Zeichenketten;473 16.3;13.3 Arrays;475 16.4;13.4 Hashes;477 16.5;13.5 Datentypunabhängig;479 17;14 Webservices mit ActiveResource;482 17.1;14.1 Was sind Webservices?;482 17.2;14.2 Einen Webservice anbieten;483 17.3;14.3 Zugriff auf Webservices mit ActiveResource;486 18;15 Mehrsprachige Applikationen;488 18.1;15.1 Konfiguration;488 18.2;15.2 Sprachauswahl;489 18.3;15.3 Übersetzungsdateien;489 18.3.1;15.3.1 Fertige Übersetzungsdateien importieren;491 18.4;15.4 Übersetzen und lokalisieren;492 18.4.1;15.4.1 Texte;492 18.4.2;15.4.2 Texte mit Platzhaltern;494 18.4.3;15.4.3 Texte mit Pluralisierung;494 18.4.4;15.4.4 Datums- und Zeitformatierung;495 18.4.5;15.4.5 Dezimalzahlen;496 18.4.6;15.4.6 Währungen;497 18.4.7;15.4.7 Übersetzung von Formularen;498 18.4.8;15.4.8 Weitere Helper;499 18.4.9;15.4.9 Ganzseitige Übersetzungen;500 19;16 Unobtrusive JavaScript und Ajax mit jQuery;502 19.1;16.1 JavaScript-Frameworks;502 19.1.1;16.1.1 jQuery;502 19.1.2;16.1.2 jQuery UI;502 19.1.3;16.1.3 Einbinden der JavaScript-Bibliotheken;503 19.2;16.2 Unobtrusive JavaScript;503 19.2.1;16.2.1 Grundlagen;504 19.2.2;16.2.2 Unobtrusive JavaScript in Rails;505 19.3;16.3 Ajax;506 19.3.1;16.3.1 Grundlagen;507 19.3.2;16.3.2 Ajax in Rails;508 19.4;16.4 Beispiele;510 19.4.1;16.4.1 Bookmark per Ajax löschen;510 19.4.2;16.4.2 Ein Bookmark per Ajax hinzufügen;513 20;17 Sicherheit, Deployment und Optimierung durch Caching;518 20.1;17.1 Sicherheit;518 20.1.1;17.1.1 SQL Injection;518 20.1.2;17.1.2 Mass Assignment;519 20.1.3;17.1.3 Cross-Site-Scripting (XSS);522 20.1.4;17.1.4 Cross-Site Request Forgery (CSRF/XSRF);523 20.1.5;17.1.5 Session Hijacking und Fixation;524 20.2;17.2 Deployment;526 20.2.1;17.2.1 Cloud Computing;526 20.2.2;17.2.2 Heroku;527 20.3;17.3 Optimierung durch Caching;530 20.3.1;17.3.1 Page-Caching;531 20.3.2;17.3.2 Action-Caching;541 20.3.3;17.3.3 Fragment-Caching;544 20.3.4;17.3.4 Caching mit der Asset Pipeline;549 21;A Die wichtigsten Ruby-Klassen;554 21.1;A.1 Zahlen;554 21.2;A.2 Zeichenketten;557 21.2.1;A.2.1 »here-document«;559 21.2.2;A.2.2 Ausdrücke in Zeichenketten;560 21.2.3;A.2.3 Die Methode »length«;561 21.2.4;A.2.4 Die Methode »split«;561 21.2.5;A.2.5 Zeichenketten formatieren;562 21.2.6;A.2.6 Groß- und Kleinschrift;563 21.2.7;A.2.7 Teil-Stings;564 21.2.8;A.2.8 In Zeichenketten suchen;566 21.2.9;A.2.9 Etwas einer Zeichenkette hinzufügen;567 21.2.10;A.2.10 Angehängte Zeichen löschen;568 21.2.11;A.2.11 Leerräume löschen;569 21.2.12;A.2.12 Zeichenketten wiederholen;569 21.2.13;A.2.13 Strings in Zahlen konvertieren;569 21.2.14;A.2.14 Zeichenketten verschlüsseln;571 21.2.15;A.2.15 Zeichen in einer Zeichenkette zählen;571 21.2.16;A.2.16 Eine Zeichenkette umkehren;572 21.2.17;A.2.17 Doppelte Zeichen entfernen;572 21.2.18;A.2.18 Bestimmte Zeichen entfernen;573 21.3;A.3 Symbole;573 21.4;A.4 Reguläre Ausdrücke;574 21.4.1;A.4.1 Syntax von regulären Ausdrücken;574 21.4.2;A.4.2 Anwendungsbeispiele aus der Praxis;577 21.5;A.5 Arrays;580 21.5.1;A.5.1 Ein Array erzeugen;580 21.5.2;A.5.2 Auf Array-Elemente zugreifen;581 21.5.3;A.5.3 Auf die Länge eines Arrays zugreifen;583 21.5.4;A.5.4 Arrays vergleichen;584 21.5.5;A.5.5 Ein Array sortieren;584 21.5.6;A.5.6 Zufall;586 21.5.7;A.5.7 Nach Elementen in einem Array suchen;587 21.5.8;A.5.8 Differenz zwischen zwei Arrays bestimmen;589 21.5.9;A.5.9 »nil«-Werte aus einem Array entfernen;589 21.5.10;A.5.10 Bestimmte Array-Elemente entfernen;589 21.5.11;A.5.11 Ein Array umkehren;591 21.5.12;A.5.12 Doppelte Einträge aus einem Array löschen;591 21.5.13;A.5.13 Iteratoren;591 21.6;A.6 Hashes;593 21.6.1;A.6.1 Einen Hash erzeugen;594 21.6.2;A.6.2 Schlüssel-Wert-Paare löschen;596 21.6.3;A.6.3 Über einen Hash iterieren;597 21.6.4;A.6.4 Schlüssel und Wert in einem Hash vertauschen;597 21.6.5;A.6.5 Schlüssel und Werte in einem Hash finden;598 21.6.6;A.6.6 Einen Hash in ein Array extrahieren;599 21.6.7;A.6.7 Nach Schlüssel-Wert-Paaren suchen;599 21.6.8;A.6.8 Einen Hash sortieren;600 21.6.9;A.6.9 Zwei Hashes miteinander mischen;600 21.6.10;A.6.10 Einen Hash aus einem Array erzeugen;601