Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Das erste deutsche Rails-Handbuch für Entwickler zur aktuellen Version 2! Hier werden die zahlreichen und komplexen Möglichkeiten des Frameworks ausführlich und verständlich gezeigt. Lesen Sie, wie Sie Rails installieren, wie Sie Ihre ersten Anwendungen erstellen und lernen Sie schließlich alle Module des Frameworks kennen.

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.

Nutzen Sie die HTML-Version zum Reinschnuppern oder als immer verfügbare Ergänzung zu Ihrem Buch.



Die gedruckte Version des Buches erhalten Sie in unserem Online-Shop - versandkostenfrei innerhalb Deutschlands und Österreichs.
Zum Online-Shop

Inhaltsverzeichnis

Geleitwort des Fachgutachters

Rheinwerk Computing - Zum Seitenanfang

Einleitung

Für wen wurde dieses Buch geschrieben?

Was befindet sich in diesem Buch?

Hinweise zu Listings

Was ist auf der CD-ROM

Die Website zum Buch

Wie wir dieses Buch erstellt haben

Danke

Rheinwerk Computing - Zum Seitenanfang

1 Einführung

1.1 Wie entstand Rails?

1.2 Warum Ruby?

1.3 Model View Controller

1.4 Datenbankpersistenz

1.5 Konvention statt Konfiguration

1.6 Das DRY-Prinzip

1.7 Das neue Web 2.0

1.8 Neues in Rails 2.0.x

1.9 Update auf Rails 2.0.x

Rheinwerk Computing - Zum Seitenanfang

2 Installation

2.1 Allgemeines

2.2 Installation unter Mac OS X

2.2.1 Updaten von Komponenten unter Leopard
2.2.2 Installation von MySQL unter Leopard
2.2.3 Installation von Ruby on Rails mit MacPorts

2.3 Installation unter Windows

2.3.1 Installation von Instant Rails
2.3.2 Der Instant Rails Manager
2.3.3 Eine Rails-Applikation erstellen und starten
2.3.4 Datenbanken verwalten mit phpMyAdmin
2.3.5 Gem-Pakete verwalten
2.3.6 Generatoren

2.4 Installation unter Linux

2.4.1 Installation von MySQL
2.4.2 Installation von SQLite3
2.4.3 Installation von PostgreSQL
2.4.4 Installation von Ruby
2.4.5 Installation von RubyGems
2.4.6 Installation von Rails und anderen Gem-Paketen

2.5 Editoren und Entwicklungsumgebungen

2.5.1 TextMate
2.5.2 E-Text-Editor
2.5.3 Vim
2.5.4 Emacs
2.5.5 Aptana
2.5.6 NetBeans
2.5.7 IntelliJ IDEA
2.5.8 CodeGear 3rdRail
Rheinwerk Computing - Zum Seitenanfang

3 Erste Schritte

3.1 Eine Rails-Applikation erstellen

3.2 Der lokale Rails-Server

3.3 Grundgerüst mit Scaffolds erstellen

3.4 Die Applikation im Browser aufrufen

3.5 HTTP-Authentifizierung

Rheinwerk Computing - Zum Seitenanfang

4 Einführung in Ruby

4.1 Was ist Ruby?

4.2 Ruby-Code ausführen

4.2.1 Quelltext
4.2.2 Interaktive Ruby Shell -- irb
4.2.3 Im Webbrowser Try Ruby

4.3 Grundlagen

4.3.1 Variablen
4.3.2 Objekte und Datentypen
4.3.3 Verzweigungen
4.3.4 Überprüfen auf Gleichheit
4.3.5 Schleifen
4.3.6 Klassen

4.4 Zahlen

4.5 Zeichenketten

4.5.1 here-document
4.5.2 Ausdrücke in Zeichenketten
4.5.3 Die Methode length
4.5.4 Die Methode split
4.5.5 Zeichenketten formatieren
4.5.6 Groß- und Kleinschrift
4.5.7 Teilstrings
4.5.8 In Zeichenketten suchen
4.5.9 Etwas einer Zeichenkette hinzufügen
4.5.10 Angehängte Zeichen löschen
4.5.11 Leerräume löschen
4.5.12 Zeichenketten wiederholen
4.5.13 Komma-separierte Daten analysieren
4.5.14 Strings in Zahlen konvertieren
4.5.15 Zeichenketten verschlüsseln
4.5.16 Zeichen in einer Zeichenkette zählen
4.5.17 Eine Zeichenkette umkehren
4.5.18 Doppelte Zeichen entfernen
4.5.19 Bestimmte Zeichen entfernen
4.5.20 Leerräume drucken

4.6 Symbole

4.7 Reguläre Ausdrücke

4.7.1 Syntax von Regulären Ausdrücken
4.7.2 Anwendungsbeispiele aus der Praxis

4.8 Arrays

4.8.1 Ein Array erzeugen
4.8.2 Auf Arrayelemente zugreifen
4.8.3 Auf die Länge eines Arrays zugreifen
4.8.4 Arrays vergleichen
4.8.5 Ein Array sortieren
4.8.6 Ein Array zufällig sortieren
4.8.7 Nach Elementen in einem Array suchen
4.8.8 Differenz zwischen zwei Arrays bestimmen
4.8.9 nil-Werte aus einem Array entfernen
4.8.10 Bestimmte Array-Elemente entfernen
4.8.11 Ein Array umkehren
4.8.12 Doppelte Einträge aus einem Array löschen
4.8.13 Iteratoren

4.9 Hashes

4.9.1 Einen Hash erzeugen
4.9.2 Zugriff auf Elemente eines Hashs
4.9.3 Schlüssel-Wert-Paare löschen
4.9.4 Über einen Hash iterieren
4.9.5 Schlüssel und Wert in einem Hash vertauschen
4.9.6 Schlüssel und Werte in einem Hash finden
4.9.7 Einen Hash in ein Array extrahieren
4.9.8 Nach Schlüssel-Wert-Paaren suchen
4.9.9 Einen Hash sortieren
4.9.10 Zwei Hashes miteinander mischen
4.9.11 Einen Hash aus einem Array erzeugen

4.10 Datum und Zeit

4.10.1 Die aktuelle Zeit bestimmen
4.10.2 Mit bestimmten Zeiten arbeiten
4.10.3 Einen Wochentag bestimmen
4.10.4 Mit der Unix-Zeit arbeiten
4.10.5 Einen Tag im Jahr ermitteln
4.10.6 Wochenzahlen ermitteln
4.10.7 Schaltjahre bestimmen
4.10.8 Uhrzeiten ausgeben
4.10.9 Datums- und Zeitwerte vergleichen
4.10.10 Mit Datums- und Zeitwerten rechnen
4.10.11 Datums- und Zeitwerte aus Zeichenketten ermitteln

4.11 Module

4.11.1 Namensräume
4.11.2 Mixins
Rheinwerk Computing - Zum Seitenanfang

5 Eine einfache Bookmarkverwaltung

5.1 Rails-Projekt erstellen

5.1.1 Erstellung des Bookmarks-Controllers
5.1.2 View erstellen

5.2 Weitere Views anlegen

5.3 Layout

5.4 Model

5.4.1 Migrations
5.4.2 ActiveRecord
5.4.3 Datenbankzugriff in der Konsole testen

5.5 CRUD -- Create -- Read -- Update -- Delete

5.6 Fehlerbehandlung in Formularen

5.7 Flash-Messages

5.8 Refaktorisierung mit Helper und Partials

5.8.1 Helper
5.8.2 Partials

5.9 Authentifizierung

5.10 Routing

5.10.1 Benannte Routen
5.10.2 Die root-Route

5.11 RESTful Rails

5.12 Darstellungsformate in RESTful Rails

5.13 Ajax

5.13.1 Einbinden von JavaScript-Bibliotheken für Ajax
5.13.2 Ajaxbasierte Formulare
5.13.3 Ajax im Controller
5.13.4 RJS-Templates
Rheinwerk Computing - Zum Seitenanfang

6 Test-Driven Development

6.1 Was ist TDD?

6.2 Vorstellung des Projekts

6.3 Projekt erstellen und konfigurieren

6.4 Unit-Tests

6.4.1 Erstellung des Country-Models
6.4.2 Erstellung des Airport-Models
6.4.3 Erstellung des Flight-Models

6.5 Functional-Tests erstellen

6.5.1 Der Functional-Test des Flights-Controllers
6.5.2 Fixtures in die Entwicklungsdatenbank laden
6.5.3 Anzeigen der Flughafen-Codes
6.5.4 Datumswerte formatieren
6.5.5 Select-Felder zur Flughafenauswahl
6.5.6 Weitere Funktionen zur Übung
6.5.7 Integration-/Acceptance-Tests erstellen
6.5.8 Integration-Test mit Rails

6.6 Autotest

6.6.1 Installation
6.6.2 Verwendung

6.7 Referenz

6.7.1 Rake-Tasks für Tests
6.7.2 Die wichtigsten Assert-Befehle
Rheinwerk Computing - Zum Seitenanfang

7 Rails-Projekte erstellen

7.1 Generieren eines Rails-Projektes

7.1.1 Datenbank festlegen
7.1.2 Freeze Rails
7.1.3 Rails-Befehl auf vorhandenem Projekt anwenden
7.1.4 Sonstige Optionen

7.2 Verzeichnisstruktur einer Rails-Applikation

7.3 Namenskonventionen

7.4 Datenbank-Konfiguration

7.5 Umgebungseinstellungen

7.5.1 Entwicklungsumgebung (development)
7.5.2 Produktionsumgebung (production)
7.5.3 Testumgebung (test)
7.5.4 Eigene Umgebungen anlegen
7.5.5 Clean up your environment

7.6 Generatoren

7.6.1 Verwendung
7.6.2 Übersicht aller Generatoren
7.6.3 Rückgängig machen

7.7 Rails-Konsole

7.8 Lokaler Server

7.9 Logging

7.10 Debugging

7.10.1 Installation von ruby-debug
7.10.2 Breakpoint setzen
7.10.3 Server mit Debugger starten
7.10.4 Debugger-Konsole
7.10.5 Ausführung fortsetzen

7.11 Rake

7.12 EdgeRails

7.13 Ein Rails-Projekt in Subversion überführen

7.13.1 Ein Rails-Projekt in Subversion importieren
7.13.2 Ein Rails-Projekt aus Subversion auschecken
7.13.3 Ignorieren von Dateien
Rheinwerk Computing - Zum Seitenanfang

8 Templatesystem mit ActionView

8.1 ERB-Templates

8.2 Erstellung von Templates

8.3 Helper

8.3.1 Helper für Verlinkungen
8.3.2 Helper zum Einbinden von Stylesheets und JavaScripts
8.3.3 Helper zur Zahlenformatierung
8.3.4 Helper zur Textmanipulation
8.3.5 Helper zur Textformatierung
8.3.6 Helper zur Entfernung von HTML-Code
8.3.7 Sonstige Helper
8.3.8 Eigene Helper entwickeln

8.4 Layouts

8.5 Formulare

8.5.1 Formulare mit Bezug zu einem Model
8.5.2 Validierung
8.5.3 Formulare mit Bezug zu mehr als einem Model
8.5.4 Formulare ohne Bezug zu einem Model

8.6 Partials

8.6.1 Übergabe von Parametern mit :locals
8.6.2 Partials mit Ressourcen
8.6.3 Shared Partials
8.6.4 Layout-Partials

8.7 Alternative Template-Systeme

Rheinwerk Computing - Zum Seitenanfang

9 Steuerzentrale mit ActionController

9.1 Grundlagen

9.2 Aufgaben des Controllers

9.2.1 Daten aus HTTP-Anfragen empfangen
9.2.2 Datenbankabfragen über Model-Klassen
9.2.3 Setzen und Abfragen von Cookies
9.2.4 Setzen und Abfragen von Sessions
9.2.5 Templates aufrufen
9.2.6 Setzen von Flash-Nachrichten
9.2.7 Weiterleitungen
9.2.8 Senden von Dateien und Daten
9.2.9 Authentifizierung

9.3 Filter

9.3.1 Filtertypen
9.3.2 Filter nur auf bestimmte Actions anwenden

9.4 Routing

9.4.1 Das Standard-Routing
9.4.2 Routing-Regeln erstellen
9.4.3 Benannte Routen
9.4.4 Die root-Route
9.4.5 Komplexe Routings mit Regulären Ausdrücken
9.4.6 Routing mit Angabe der HTTP-Methode
9.4.7 Ressourcen
Rheinwerk Computing - Zum Seitenanfang

10 Datenbankzugriff mit ActiveRecord

10.1 Einführung

10.1.1 Vor- und Nachteile
10.1.2 Unterstützte Datenbanksysteme
10.1.3 Ein erstes Beispiel
10.1.4 Tabelle erstellen

10.2 Eine ActiveRecord-Model-Klasse generieren

10.2.1 Generieren eines Models mit dem Model-Generator

10.3 Rake-Tasks zum Verwalten von Datenbanken

10.3.1 Erstellen und Löschen von Datenbanken
10.3.2 Informationen über die Datenbanken
10.3.3 Migrations
10.3.4 Fixtures
10.3.5 Testdatenbank
10.3.6 Schema-Dateien
10.3.7 Sessions

10.4 Getter- und Setter-Methoden

10.4.1 Überschreiben der Getter- und Setter-Methoden
10.4.2 Automatische Typ-Erkennung

10.5 Erstellen, bearbeiten und löschen

10.5.1 Neues ActiveRecord-Objekt erstellen
10.5.2 ActiveRecord-Objekt erstellen und direkt speichern
10.5.3 Aktualisieren von Objekten
10.5.4 Löschen von Objekten

10.6 Suchen

10.6.1 Suche nach IDs
10.6.2 Suche nach dem ersten Datensatz oder Ausgabe aller Datensätze
10.6.3 Suchoptionen im Überblick
10.6.4 Suchbedingung (:conditions)
10.6.5 Sortierreihenfolge (:order)
10.6.6 Limitieren der Suchergebnisse
10.6.7 Suche mit dynamischen Find-Methoden
10.6.8 Suche über SQL

10.7 Datenbankschema und Migrations

10.8 Migration-Skripte

10.8.1 Migration-Skripte generieren
10.8.2 Änderungen ausführen
10.8.3 Änderungen rückgängig machen

10.9 Migration-Befehle im Detail

10.9.1 Datentypen
10.9.2 Tabellenfelder verwalten
10.9.3 Tabellen verwalten
10.9.4 Indizes verwalten
10.9.5 Beispieldaten hinzufügen
10.9.6 SQL-Befehle direkt verwenden
10.9.7 Schnappschuss eines Datenbankschemas

10.10 Assoziationen

10.10.1 Eins-zu-viele-Assoziationen (1:n)
10.10.2 Eins-zu-eins-Assoziationen (1:1)
10.10.3 Viele-zu-viele-Assoziationen (n:m)
10.10.4 Polymorphe Assoziationen
10.10.5 Mehrere Assoziationen zum gleichen Model
10.10.6 Assoziationen mit Bedingungen
10.10.7 Eine Assoziation um eigene Methoden erweitern

10.11 Validierung

10.11.1 validates_acceptance_of
10.11.2 validation_associated
10.11.3 validates_confirmation_of
10.11.4 validates_exclusion_of
10.11.5 validates_inclusion_of
10.11.6 validates_format_of
10.11.7 validates_length_of/validates_size_of
10.11.8 validates_numericality_of
10.11.9 validates_presence_of
10.11.10 validates_uniqueness_of
10.11.11 validates_each

10.12 Statistische Berechnungen

10.13 Callbacks

10.14 Vererbung

Rheinwerk Computing - Zum Seitenanfang

11 E-Mails verwalten mit ActionMailer

11.1 Beispielprojekt: Kontaktformular

11.2 HTML-E-Mails

11.3 E-Mails mit Anhängen

11.4 Konfiguration

Rheinwerk Computing - Zum Seitenanfang

12 Nützliche Helfer mit ActiveSupport

12.1 Zahlen

12.1.1 Gerade und ungerade Zahlen
12.1.2 Ordinalzahlen
12.1.3 Kapazitätseinheiten
12.1.4 Datum und Zeit

12.2 Zeichenketten

12.3 Arrays

12.4 Hashes

12.5 Datentypunabhängig

Rheinwerk Computing - Zum Seitenanfang

13 Ajax on Rails

13.1 Grundlagen

13.2 JavaScript-Frameworks

13.2.1 Prototype
13.2.2 Script.aculo.us
13.2.3 Weitere Frameworks

13.3 Einbinden der JavaScript-Bibliotheken

13.4 RJS: Ruby-JavaScript

13.4.1 RJS-Befehle einfügen
13.4.2 Aufrufen von RJS
13.4.3 Beispiel

13.5 Debugging mit Firebug

13.6 RJS-Referenz

13.6.1 Methoden zum Ein- und Ausblenden von Elementen
13.6.2 Methoden zum Hinzufügen, Ersetzen und Löschen von Elementen
13.6.3 Sonstige Methoden
Rheinwerk Computing - Zum Seitenanfang

14 RESTful Rails und Webservices

14.1 Was sind Webservices?

14.2 REST

14.2.1 Ressourcen / Nomen
14.2.2 HTTP-Methoden / Verben

14.3 RESTful Rails

14.3.1 Generatoren
14.3.2 Ressourcen
14.3.3 Verschachtelte Ressourcen
14.3.4 Namespaces
14.3.5 Singleton-Ressourcen
14.3.6 Ressourcen erweitern

14.4 Einen Webservice anbieten

14.4.1 Die Weboberfläche
14.4.2 Die API

14.5 Zugriff auf einen Webservice mit ActiveResource

Rheinwerk Computing - Zum Seitenanfang

15 Rails mit Plug-ins erweitern

15.1 Plug-ins Grundlagen

15.1.1 Plug-ins installieren und deinstallieren
15.1.2 Plug-ins-Quellen verwalten

15.2 Nützliche Plug-ins

15.2.1 Authentifizierung mit Restful Authentication
15.2.2 Mehrsprachige Applikationen mit Globalite
15.2.3 User-Fotos anzeigen mit Gravatar
15.2.4 Fehlerbenachrichtigung mit Exception Notifier
15.2.5 Weitere nützliche Plug-ins
Rheinwerk Computing - Zum Seitenanfang

16 Performancesteigerung

16.1 Einführung

16.2 Page-Caching

16.2.1 Grundlagen
16.2.2 Caching im Controller aktivieren
16.2.3 Einstellungen
16.2.4 Beispiel
16.2.5 Löschen von Cache-Dateien
16.2.6 Cachen der Root-Page

16.3 Action-Caching

16.3.1 Grundlagen
16.3.2 Beispiel
16.3.3 Löschen von Cache-Dateien
16.3.4 Verschiedene Caching-Strategien mischen

16.4 Fragment-Caching

16.4.1 Grundlagen
16.4.2 Beispiel
16.4.3 Löschen von Cache-Dateien

16.5 Caching von CSS- und JavaScript-Dateien

16.5.1 Grundlagen
16.5.2 Beispiel
16.5.3 Löschen der Cache-Dateien

16.6 Caching mit memcached

16.6.1 Grundlagen
16.6.2 Installation
16.6.3 Installation des memcached-Servers
16.6.4 Verwendung
16.6.5 Löschen des Caches

16.7 Zusammenfassung

Rheinwerk Computing - Zum Seitenanfang

17 Sicherheit

17.1 Warum Sicherheit wichtig ist

17.2 SQL Injection

17.3 Cross-Site-Scripting XSS

17.4 Cross-Site Request Forgery (CSRF/XSRF)

17.5 Sessions

17.5.1 Session Hijacking
17.5.2 Session Fixation

17.6 Validierung

17.7 Reguläre Ausdrücke

Rheinwerk Computing - Zum Seitenanfang

18 Veröffentlichen einer Rails-Applikation auf einem Server

18.1 Wahl des Providers

18.2 Einrichten des Servers

18.2.1 Wahl der Server-Software
18.2.2 Deploy-User anlegen
18.2.3 Paketmanagement konfigurieren
18.2.4 Installation von Subversion und Erstellung eines Repository
18.2.5 Installation von Ruby und Co.
18.2.6 MySQL
18.2.7 Datenbank für das Beispielprojekt anlegen
18.2.8 Installation von SQLite3
18.2.9 Installation von Rails
18.2.10 Installation und Konfiguration von Mongrel
18.2.11 Apache-Webserver
18.2.12 Module aktivieren

18.3 Konfigurieren der Rails-Applikation auf dem Server

18.3.1 Konfiguration
18.3.2 Verzeichnis für Railsprojekt erstellen
18.3.3 Statische Seite testen
18.3.4 Mongrel-Cluster-Konfiguration vorbereiten

18.4 Deployment mit Capistrano

18.4.1 Konfiguration der Datenbank
18.4.2 Installation
18.4.3 Capistrano in Rails-Applikation konfigurieren
18.4.4 Verzeichnisse auf dem Server erstellen
18.4.5 Mongrel-Cluster-Konfigurationsdatei auf dem Server generieren
18.4.6 Übertragen und Starten der Rails-Applikation
18.4.7 Die letzte Übertragung rückgängig machen
18.4.8 Anzeigen einer Wartungsseite
18.4.9 Übertragung einzelner Dateien
18.4.10 Wie Capistrano einen Deploy durchführt
18.4.11 Verzeichnisse, die nicht im Repository sind, verwalten
18.4.12 Weitere Capistrano-Tasks
Rheinwerk Computing - Zum Seitenanfang


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Ruby on Rails 2
Ruby on Rails 2
Jetzt Buch bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern