Suchen und Finden
Service
Ruby on Rails für JEE-Experten - Umfassender Einstieg in Rails und JEE-Integration mit JRuby
Michael Johann
Verlag Carl Hanser Fachbuchverlag, 2008
ISBN 9783446417526 , 488 Seiten
Format PDF, OL
Kopierschutz Wasserzeichen
Inhalt
8
Vorwort
14
Nutzungshinweise zum Buch
15
1 Einführung in Ruby on Rails
17
1.1 Was ist Ruby on Rails
17
1.2 Volle Unterstützung von MVC (Model View Controller)
19
1.3 Konzepte für agile Entwicklung
19
1.3.1 Testgetriebene Entwicklung
20
1.3.2 Konvention vor Konfiguration
21
1.3.3 DRY – Don’t Repeat Yourself
24
1.4 Beispiele aus der Geschäftswelt
25
1.5 Installation von Rails
27
1.5.1 Installation mit BitRock Rubystack für MacOS X und Linux
27
1.5.2 Manuelle Installation unter MacOS X
36
1.5.2.1 Ruby installieren
36
1.5.2.2 Installation von RubyGems
37
1.5.2.3 Installation von Rails
38
1.5.3 Installation unter Windows XP/Vista
38
1.5.4 Integrierte Entwicklungsumgebungen
42
1.5.4.1 NetBeans 6
42
1.5.4.2 3rdRail
47
1.5.4.3 Textmate
50
1.5.4.4 IntelliJ IDEA 7
52
1.5.4.5 Aptana Studio/RadRails
54
1.5.5 Rails-Anwendungen als WAR-Datei ausliefern
57
2 Einführungs-Tutorial: Newsfeed-Verwaltung
59
2.1 Anlegen des Projektes
59
2.1.1 Rake zum Anlegen der Datenbanken verwenden
64
2.1.2 Manuelles Anlegen der Datenbanken
65
2.2 Ein erster Teststart
66
2.3 Generieren der Kategorien
68
2.3.1 Generieren des Modells Category
69
2.3.2 Datenbank migrieren
69
2.3.3 Generieren eines Controllers für das Category-Modell
71
2.3.4 Routing ergänzen
73
2.3.5 Anlegen der Views
74
2.3.6 Validierungen
80
2.4 Generieren der Newsfeed-Verwaltung
84
2.4.1 Generator aufrufen
84
2.4.2 Allgemeines zu REST
86
2.4.3 REST im Controller
90
2.5 Assoziationen einbauen
98
2.5.1 Migration für Beziehungen zwischen Feed und Category anlegen
99
2.5.2 Views anpassen
101
2.6 Für ein besseres Design
105
2.6.1 Übergeordnetes Layout
105
2.6.2 Default-Route
109
2.6.3 Das Layout für andere Controller verwenden
109
2.6.4 Eindeutschen ohne Internationalisierung
110
2.7 Einfache Authentifizierung
110
2.8 Apple iPhone als Client
113
2.9 Zusammenfassung
116
3 Testgetriebene Entwicklung
117
3.1 Einführung
117
3.1.1 Vorteile
118
3.1.2 Unittests
119
3.1.3 Funktionale Tests
120
3.2 Test::Unit
120
3.2.1 Unittests
120
3.2.1.1 Fixtures
122
3.2.1.2 Tests mit Rake starten
125
3.2.1.3 Assertions für alle Fälle
128
3.2.2 Funktionale Tests in Rails
128
3.3 ZenTest
130
3.3.1 Automatisiertes Testen
130
3.4 Behavior Driven Development
131
3.4.1 rSpec
133
3.4.1.1 Grundlagen und Installation neues Objekt
133
3.4.1.2 Ein Beispiel
134
3.4.2 Weitere Tools
153
3.4.2.1 rcov
154
3.5 Zusammenfassung
159
4 Ruby: Das Wichtigste
161
4.1 Eine kurze Einführung
161
4.1.1 Konzepte von Ruby
162
4.1.2 Einige Programmierrichtlinien
163
4.1.2.1 Konstanten
164
4.1.3 Einfache Rechenbeispiele
165
4.1.4 Zahlen
165
4.1.5 Strings
166
4.1.6 Konvertierungen
168
4.1.7 Schleifen und Bedingungen
169
4.1.7.1 while-Schleife
170
4.1.7.2 Bedingungen
171
4.2 Sprachkonzepte und vertiefende Informationen
177
4.2.1 Alles ist ein Objekt
177
4.2.2 nil ist auch ein Objekt
178
4.2.3 Methoden sind Nachrichten
178
4.2.4 Klassen und Subklassen
179
4.2.5 Attribute
180
4.2.6 Struct als Klasse
181
4.2.7 Die Methode dup
181
4.2.8 Reguläre Ausdrücke
182
4.2.9 Typen herausfinden
183
4.2.10 Subklassen
183
4.2.11 Mehr Wissenswertes zu Methoden
184
4.2.11.1 Klassenmethoden definieren
184
4.2.11.2 Singleton-Methoden
185
4.2.12 Zuweisungen
186
4.2.12.1 Logische Zuweisung
187
4.2.13 Module – MixIns
187
4.2.14 Module – Namespace
188
4.2.15 Introspektion
188
4.2.16 Nützliches zur Klasse String
189
4.2.17 Weitere Features von Array
190
4.2.18 Symbole
192
4.2.19 Mehr zu Methoden
192
4.2.19.1 Anzahl Übergabeparameter
192
4.2.19.2 Array in Parameter umwandeln
193
4.2.19.3 Duck-Typing
193
4.2.20 Die Klasse Range
193
4.2.21 Das Schlüsselwort case
194
4.2.22 Metaprogrammierung: Blöcke und Closures
194
4.2.22.1 Blöcke
194
4.2.22.2 Closures
196
4.2.22.3 Die Methode arity
201
4.2.22.4 module_eval, class_eval, instance_eval und eval
204
4.2.22.5 Und die Moral ...
205
4.2.23 Exceptions
206
4.2.24 Alias-Methoden
209
4.2.25 Offene Kernel-Klassen
209
4.3 Zusammenfassung
210
5 Versionskontrolle
211
5.1 Grundlegendes
211
5.1.1 Vorteile verteilter Versionskontrolle
212
5.1.2 Nachteile
213
5.2 Mercurial
214
5.2.1 Einführung in Mercurial
215
5.2.1.1 Verfügbare Clients
215
5.2.1.2 Installation unter Mac OS X
216
5.2.1.3 Installation unter Windows
216
5.2.1.4 Installation unter Linux
216
5.2.1.5 Hilfe kommt
216
5.2.2 Gängige Workflows
218
5.2.2.1 Anlegen eines Repositories
218
5.2.2.2 Status der Arbeitskopie abfragen
218
5.2.2.3 Elemente ausschließen
219
5.2.2.4 Einchecken von Dateien
220
5.2.2.5 Server bereitstellen
220
5.2.2.6 Klonen eines Repositories
222
5.2.2.7 Taggen von Revisionen
224
5.2.2.8 Pullen
225
5.2.2.9 Pushen
226
5.2.2.10 Mergen von Dateien
226
5.2.3 Zusammenfassung
229
5.3 Git
230
5.3.1 Einführung in Git
230
5.3.1.1 Verfügbare Clients
231
5.3.1.2 Installation unter Mac OS X
231
5.3.1.3 Installation unter Windows
232
5.3.1.4 Installation unter Linux
232
5.3.1.5 Hilfe kommt
233
5.3.2 Gängige Workflows
234
5.3.2.1 Grundlegende Konfiguration
234
5.3.2.2 Anlegen eines Repositories
235
5.3.2.3 Status der Arbeitskopie abfragen
236
5.3.2.4 Elemente ausschließen
236
5.3.2.5 git-instaweb
238
5.3.2.6 Einchecken von Dateien
239
5.3.2.7 Klonen eines Repositories
240
5.3.2.8 Taggen von Revisionen
240
5.3.2.9 Änderungen vornehmen
240
5.3.2.10 Pushen
242
5.3.2.11 gitk
243
5.3.2.12 Pullen
243
5.3.2.13 Mergen von Dateien
244
5.4 Zusammenfassung
245
6 JRuby
247
6.1 Einführung in JRuby
247
6.2 Installation von JRuby
249
6.2.1 Eigener Build
249
6.2.2 Gems installieren
250
6.3 Erste Schritte
251
6.3.1 Java aus Ruby heraus aufrufen
251
6.3.1.1 Eine Klasse aufrufen
251
6.3.1.2 Eine Schnittstelle implementieren
252
6.3.2 Eine kleine Swing-Anwendung in Ruby
254
6.3.3 Eine Enterprise JavaBean aus Ruby heraus aufrufen
256
6.3.3.1 Projekt erstellen
256
6.3.3.2 TodoTitem Entity-Bean erstellen
258
6.3.3.3 TodoManager Session-Bean erstellen
259
6.3.3.4 Todo Projekt anlegen
261
6.3.3.5 Scaffolding für TodoItem generieren
261
6.3.3.6 Konfiguration der verwendeten Frameworks von Ruby on Rails
262
6.3.3.7 TodoManager implementieren
262
6.3.3.8 TodoItemsController anpassen
265
6.3.3.9 Views anpassen
266
6.4 Deployment
270
6.4.1 Als Standalone-Anwendung
270
6.4.2 Als Webanwendung im WAR
271
6.5 Zusammenfassung
272
7 Projekt: briefcasten.com
273
7.1 Grundlagen und Anforderungen
273
7.2 Warum briefcasten.com?
274
7.3 Wie soll das „Look and Feel“ sein?
275
7.3.1 Anforderung
275
7.3.2 Umsetzung
276
7.4 Iteration 1: Was ist mit dem Shop möglich?
281
7.4.1 Programmieren einer rollenbasierten Benutzerverwaltung
281
7.4.2 Layout integrieren
290
7.4.3 ActionMailer für den Nachrichtenversand konfigurieren
293
7.4.4 Root-Mapping einführen
295
7.4.5 Aktivierung durchführen
297
7.4.6 Statusinformationen
300
7.4.7 Remember me
301
7.4.8 Passwort-Reset für Vergessliche
306
7.4.9 Benutzerverwaltung für den Administrator
316
7.4.10 Zugriff weiter einschränken
323
7.4.11 Admin-Links einbauen
325
7.4.12 Tag vergeben
328
7.4.13 Zusammenfassung der Iteration 1
329
7.5 Iteration 2: Was kann man dort kaufen?
330
7.5.1 Das Produkt-Modell spezifizieren
330
7.5.1.1 rSpec-Plugins installieren
330
7.5.1.2 Datenbank und Modelle vorbereiten
331
7.5.1.3 Experimente mit der Rails-Console
337
7.5.1.4 Erste Spezifikationen für Product und Screencast
339
7.5.1.5 Änderungen versionieren
347
7.5.2 ScreencastsController und Multimodell-Formulare
347
7.5.2.1 Anlegen von Screencast-Objekten
350
7.5.2.2 Anzeigen von Screencast-Objekten
356
7.5.2.3 Bearbeiten von Screencast-Objekten
361
7.5.2.4 Löschen von Screencast-Objekten
362
7.5.2.5 Feinschliff für die Index-View
365
7.5.2.6 Links anpassen
367
7.5.2.7 Abschließende Arbeiten
369
7.5.3 Zusammenfassung der Iteration 2
369
7.6 Iteration 3: Wie sieht die Kundenverwaltung aus?
370
7.6.1 Modell Customer
370
7.6.1.1 Anrede verwalten
372
7.6.2 Assoziierte Modelle erstellen
372
7.6.2.1 Modell „Address“
372
7.6.2.2 Modell „Title“
374
7.6.2.3 User-Objekt verknüpfen
375
7.6.2.4 Migration ausführen
375
7.6.3 CustomersController
376
7.6.4 Views für den CustomersController
376
7.6.4.1 Die View new
376
7.6.4.2 Die View show
385
7.6.4.3 Die View Edit
386
7.6.4.4 index
389
7.6.4.5 Zugriffsbeschränkungen
390
7.6.4.6 Mein Konto
391
7.6.4.7 Admin-Menü anpassen
392
7.6.5 Abschließende Arbeiten
395
7.6.6 Zusammenfassung der Iteration 3
395
7.7 Iteration 4: Gibt es eine Produktvorschau?
395
7.7.1 Abschließende Arbeiten
400
7.7.2 Zusammenfassung Iteration 4
401
7.8 Iteration 4.1: Wie sieht der Bestellvorgang aus?
402
7.8.1 Spezifikationen für CartItem
402
7.8.2 Die Klasse CartItem
403
7.8.3 Spezifikationen für ShoppingCart
405
7.8.4 Die Klasse ShoppingCart
407
7.8.5 Der ShoppingCartController
409
7.8.5.1 Controller generieren
413
7.8.5.2 View implementieren
414
7.8.6 Produkte entfernen
415
7.8.7 Warenkorbübersicht implementieren
418
7.8.7.1 Layout anpassen
418
7.8.7.2 Partial erstellen
420
7.8.8 Eine Bestellung speichern
421
7.8.8.1 Spezifikationen erstellen
421
7.8.8.2 Notwendige Fixtures
425
7.8.8.3 Die Klasse Order
427
7.8.8.4 OrdersController anpassen
429
7.8.8.5 OrdersController generieren
432
7.8.8.6 Abschließende Arbeiten
434
7.8.8.7 Zusammenfassung der Iteration 4.1
435
7.9 Iteration 5: Wie wird PayPal integriert?
435
7.9.1 Grundlagen zu PayPal Website Payments Standard
437
7.9.1.1 Händlerkonto einrichten
437
7.9.2 Developer Sandbox
440
7.9.3 ActiveMerchant für PayPal Website Payments Standard
442
7.9.4 Verschlüsselungs-Module für Buttons
443
7.9.5 Integration in den OrdersController
444
7.9.6 IPN implementieren
448
7.9.6.1 Speichern der PayPal IPN
449
7.9.6.2 E-Mail versenden
450
7.9.7 Testszenarien und deren Durchführung
455
7.9.8 Abschließende Arbeiten
457
7.9.9 Zusammenfassung der Iteration 5
458
7.10 Iteration 6: Volltextsuche mit Lucene
458
7.10.1 DBSight
459
7.10.2 Suche konfigurieren
459
7.10.3 Suche aufrufen
463
7.10.4 Ergebnisse auswerten und anzeigen
466
7.10.5 Abschließende Arbeiten
467
7.10.6 Zusammenfassung der Iteration
467
7.11 Zusammenfassung
467
8 Internationalisierung und Lokalisierung
469
8.1 Zielsetzung
469
8.1.1 Grundsätzliches
469
8.2 Implementierung
470
8.2.1 Das Plugin Globalize
470
8.2.2 Das Locale setzen
471
8.2.3 Die Methode loc
472
8.2.4 Die Methode t
473
8.2.5 Einzelne Strings übersetzen
473
8.2.5.1 Konstanten für die Anrede
475
8.2.6 Modell-Übersetzungen
476
8.2.7 Controller und Views übersetzen
477
8.2.8 Fehlermeldungen von Ruby on Rails übersetzen
480
8.2.9 Ganze Views austauschen
480
8.2.10 ActionMailer
481
8.3 Zusammenfassung
481
Register
483