Linksammlung zu Ruby und Rails sowie PostgreSQL
Am Wochenende habe ich viele neue Sachen, die auch für Euch interessant sein könnten:
- Auf Railscasts.com gibt es über 100 Video-Casts zu speziellen RoR-Themen.
- Auf rorsecurity.info findet man eine Reihe von Beiträgen zu Sicherheitsthemen.
- Mit bundle_fu kann man automatisch mehrere eingebundene Stylesheets/JS-Files zusammenfassen, was die Aufbauzeiten stark reduziert.
- calendar_date_select ist ein Rails-Plugin, das einen schönen Date-Picker bereitstellt.
- Auf lindsaar.net gibt es einige lesenswerte Rails-Tips, z.B. ein Hinweis auf die Bang-Bang-Notation (!!) in Ruby und transactional migrations.
- Leider sind transaction migrations bei MySQL nicht möglich, da die DDL-Kommandos (CREATE TABLE etc.) nicht von Transaktionen erfasst sind. Bei PostgreSQL ist das hingegen kein Problem.
PostgresSQL
- Also habe ich mir endlich einmal PostgreSQL angeschaut — das wollte ich sowieso schon lange machen. Es gibt verschiedene Möglichkeiten, Postgres unter Mac OS X zu installieren, z.B. mit einem Installer.
- Nach einigen Recherchen habe ich mich aber dazu entschieden, die Installation doch lieber mit MacPorts durchzuführen. Interessant war der Beitrag auf Robby on Rails.
- Die PostgresSQL-Installation erledigt folgender Aufruf: sudo port install postgresql83 postgresql83-server
- Nach der Installation muss man zunächst einmal eine neue Datenbankinstanz anlegen — schon hier wird deutlich, dass sich Postgres viel mehr an Business-DBMS wie dem MS SQL Server oder Oracle anlehnt als an den Kollegen MySQL. Wie in vielen Howtos beschrieben erfolgt die Einrichtung der Instanz wie folgt:
sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb;
sudo chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb;
sudo su postgres -c ‘/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb’ - Allerdings gab es bei mir ein Problem: Der letzte Befehl brachte eine Fehlermeldung hervor (su: /dev/null: Permission denied). Ursache: Der postgres-Benutzer hat als Shell /dev/null eingetragen. Daher kann su keine Kommandos in dessen Kontext ausführen.
- Kein Problem, dann ändern wir halt schnell die Shell in /etc/passwd. Denkste! In der Datei existiert der postgres-Benutzer gar nicht. Das liegt daran, dass OS X die sog. NetInfo-Datenbank zum Speichern der Benutzer verwendet. /etc/passwd wird nur im Single-User-Mode, der im Notfall verwendet werden kann, ausgewertet.
- Wie ändert man Einträge in der NetInfo-DB? Mit dscl! Aufruf: dscl localhost. Das ist eine Art Shell für die Datenbank. Die Datenbank ist hierarchisch aufgebaut wie ein Dateisystem und man kann nach dem Starten mit cd und ls hindurchnavigieren
- Der Aufruf zum Ändern der Shell lautet: dscl . -create /Users/postgres UserShell /bin/bash
- Danach wird die Instanz eingerichtet (was überraschend lange dauert — was macht der denn alles?) und man kann den Server mit dem Kommando sudo su postgres -c ‘/opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/defaultdb’ starten. Puh!
- Dann habe ich mir pgAdmin3, eine offenbar weitverbreitete Client-GUI für verschiedene Plattformen besorgt, um mich zum ersten Mal mit dem Server zu verbinden. Mit phpPgAdmin gibt es auch ein mit phpMyAdmin vergleichbares Web-basiertes Tool.
- Beim Ausprobieren von pgAdmin3 wird mir schnell klar, dass das komplexer wird als gedacht — da ist von Table Spaces und Login Rollen die Rede — Konzepte, die einem MySQL-Benutzer gar nichts sagen. Klingt aber spannend. Weiter bin ich noch nicht gekommen, insbesondere der Ruby-Datenbank-Treiber wird noch spannend. Angeblich kann man ihn einfach mit gem install postgres installieren.
Puh, das reicht fürs Erste. Ich bin ja gespannt, ob ich mich mit Postgres anfreunden kann. Achja, übrigens: Ich habe mir heute endlich das legendäre Pickaxe-Buch gekauft.







1 Kommentar