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-DateienBearbeiten

Im 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)

DatenbankBearbeiten

Die 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.