Websiteentwicklung: Ruby on Rails: Konfiguration und Datenbank
Wenn man ein Projekt mit
rails new projektname
startet, speichert Rails die Daten in einer sqlite-Datenbank. Das ist besonders einfach: alle Daten sind in der Datei db/development.sqlite3 zu finden.
Wenn man das Projekt gleich mit
rails new -d mysql projektname
startet wird statt dessen mysql verwendet. Nun wollen wir uns näher mit der Konfiguration befassen und dabei lernen wie man ein laufendes Projekt auf ein mysql-Datenbank umstellt.
Konfigurations-Dateien
BearbeitenIm Ordner config sind u.a. folgende Dateien zu finden:
- database.yml
- Konfiguration der Datenbanken für die verschiedenen Server
- routes.rb
- Konfiguation der URLs und ihrer Umrechnung auf Controller und Actions
- environment.rb
- weitere Konfiguration
- locales/en.yml
- Texte für die englische Version der Website (hier könnte man de.yml, it.yml, u.s.w. einfügen)
Datenbank
BearbeitenDie Datei database.yml enthält normalerweise folgenden Code:
development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 # test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000 # production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000
Hier sehen wir dass in Rails von Anfang an drei verschiedene Server vorgesehen sind:
- development
- ist die Datenbank für die Entwicklung, wenn ich das Programm schreibe und ausprobiere
- test
- ist die Datenbank für die automatischen Tests. Diese Datenbank wird auch automatisch erzeugt und wieder gelöscht
- production
- ist die Datenbank für den Echt-Betrieb
Wenn ich mysql statt sqlite verwenden will muss ich einerseits entsprechende Datenbanken
in meinem MySQL Server anlegen und andererseits die Konfigurationsdatei ändern. Hier
ein Beispiel für das Projekt 'chor': (Achtung beim Kopieren dieses Codes: diese Konfigurationsdatei
verträgt keine Tabulatoren und keine Leerzeichen vor development, test, production!)
development: adapter: mysql encoding: utf8 reconnect: false database: chor_development pool: 5 username: root password: host: localhost # test: adapter: mysql encoding: utf8 reconnect: false database: chor_test pool: 5 username: root password: host: localhost # production: adapter: mysql encoding: utf8 reconnect: false database: chor_production pool: 5 username: root password: host: localhost
Die Konvention, an den Applikationsnamen mit Unterstrich etwas anzuhängen um den Datenbanknamen zu erzeugen
hat eine angenehme Nebenwirkung: in phpmyadmin werden die Datenbanken gruppiert.