7.4 Datenbank-Konfiguration
database.yml
Beim Generieren eines Rails-Projekts erstellt Rails die Datenbank-Konfigurationsdatei config/database.yml mit den Einstellungen für den Datenbankzugriff automatisch. Rails geht standardmäßig von einer SQLite3-Datenbank aus. Wenn Sie einen anderen Datenbankadapter verwenden möchten, können Sie diesen mit dem optionalen Parameter --database oder -d angeben.
- MySQL:
--database mysql
- Oracle:
--database oracle
- PostgreSQL:
--database postgresql
Die Option --database müssen Sie jedoch nicht beim Erzeugen des Projekts angeben, da Sie die Konfigurationsdatei database.yml jederzeit an einen anderen Datenbankadapter anpassen können.
Datenbankadapter in Rails 2.0 |
Rails 2.0 enthält standardmäßig nur Datenbankadapter für MySQL, SQLite3 und PostgreSQL. Die Adapter der kommerziellen Datenbanken wurden in RubyGems-Pakete ausgelagert. Nach der Installation des jeweiligen RubyGems-Paketes können die Datenbankadapter wie gewohnt genutzt werden. Die Konfigurationsdatei database.yml liegt im YAML-Format (siehe Anhang) vor. |
Nach der Generierung des Rails-Projekts ist die Datei wie folgt für SQLite3 konfiguriert:
Listing config/database.yml
# SQLite version 3.x # gem install sqlite3-ruby (not necessary on OS X Leopard) development: adapter: sqlite3 database: db/development.sqlite3 timeout: 5000 # Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run # 'rake'. # Do not set this db to the same as development or production. test: adapter: sqlite3 database: db/test.sqlite3 timeout: 5000 production: adapter: sqlite3 database: db/production.sqlite3 timeout: 5000
Die Einstellungen in der database.yml sind in drei Bereiche unterteilt:
- Development:
Datenbankeinstellungen für die Entwicklungsumgebung - Test:
Datenbankeinstellungen für die Testumgebung - Production:
Datenbankeinstellungen für die Produktionsumgebung
Jede dieser Umgebungen enthält folgende Einstellungsmöglichkeiten:
- Adapter:
Datenbanktyp, z. B. mysql , postgresql oder sqlite3 - Database:
Name der Datenbank oder bei SQLite der Datenbankdatei - Timeout:
maximale Dauer für das Warten auf die Freigabe der Datenbank in Millisekunden
Wenn Sie eine MySQL-Datenbank verwenden, sind folgende Einstellungen möglich:
- Adapter:
Datenbanktyp, z. B. mysql , postgresql oder sqlite3 - Encoding:
Der zu verwendende Zeichensatz in der Datenbank - Database:
Name der Datenbank oder bei SQLite der Datenbankdatei - Username:
Benutzername für den Zugriff auf die Datenbank (nicht bei SQLite) - Password:
Passwort für den Zugriff auf die Datenbank (nicht bei SQLite) - Socket:
Socket-Datei für MySQL (wird automatisch ermittelt)
Hätten Sie bei der Generierung des Projekts nicht rails projektname, sondern rails -d mysql projektname verwendet, hätte Rails diese Einstellungen automatisch vorgenommen.
Socket oder Host?
Es gibt zwei Arten, wie Rails mit einer MySQL-Datenbank kommuniziert:
- Über eine Socket-Datei:
Schnelle Verbindung zur Datenbank, setzt allerdings voraus, dass der Pfad zu der Datei der ist, den MySQL erwartet. Diese Verbindung wird automatisch beim Erzeugen der Applikation in der database.yml über den Eintrag socket: angelegt. - Über das Netzwerk:
Diese Verbindung ist ein klein wenig langsamer als die Verbindung über die Socket-Datei. Es wird in der database.yml ein zusätzlicher Eintrag host: 127.0.0.1 benötigt, und der socket -Eintrag kann entfallen. Auf Windows-basierten Systemen ist diese Konfiguration zu empfehlen. Zusätzlich kann man über den Eintrag port den Port angeben. Wenn Sie den Standardport 3306 für MySQL verwenden, können Sie diesen Eintrag aber weglassen.
Falls Sie SQLite3 verwenden, können Sie die Einstellungen belassen. Auch die Datenbankdatei development.sqlite3, in der die gesamte Datenbank gespeichert wird, hat Rails bereits im Verzeichnis db erstellt.
Bei anderen Datenbanken wie z. B. MySQL wird ein Datenbankserver benötigt, der installiert werden muss.
Keine Tabulatoren in YAML-Dateien verwenden |
Achten Sie beim Bearbeiten der Konfigurationsdatei unbedingt darauf, dass Sie die Einrückung beibehalten und keine Tabulatoren, sondern nur Leerzeichen verwenden. |
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.