dummies
 

Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur ebooks mit Firmenlizenz anzeigen:

 

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

Geräte

49,90 EUR

Für Firmen: Nutzung über Internet und Intranet (ab 2 Exemplaren) freigegeben

Derzeit können über den Shop maximal 500 Exemplare bestellt werden. Benötigen Sie mehr Exemplare, nehmen Sie bitte Kontakt mit uns auf.


 

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