Update: Bis her war ein Fehler in diesem HowTo. MySQL muss natürlich als Server Version installiert werden ($ sudo port install mysql5 +server). Das Update betrifft nur den MySQL5 Bereich.
Damit wir Ruby on Rails auch wirklich nutzen können, sollten wir noch ein paar Programme, Tools und Gems installieren.
Als erstes wäre da MySQL, denn wie wollen wir Datenbankgestütze Webentwicklung betreiben, wenn wir nicht mal einen Datenbank-Server und damit eine Datenbank haben…
MySQL5
Da wir ja MacPorts installiert haben ist das ganze recht einfach. Um auf Nummer Sicher zu gehen, machen wir jedoch erst mal ein selfupdate für MacPorts und installieren erst dann MySQL5
$ sudo port selfupdate
$ sudo port install mysql5 +server
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
$ sudo chown -R mysql:mysql /usr/local/macports/var/db/mysql5
$ sudo -u mysql mysql_install_db5
Jetzt am besten den Mac neu starten, dann kann man gleich sehen ob das LauchItem funktioniert.
MySQL Native Bindings Gem
Jetzt kommt der Teil, der mich die meiste Zeit gekostet hat (dabei sollte er doch die Geschwindigkeit der MySQL Abfragen beschleunigen) und der Grund war, warum ich bis her ohne die Nativen Bindings auskommen musste.
Das MySQL Gem ist irgendwie sehr unflexible, was die Pfade angeht und dazu kommt, dass MacPorts die MySQL Installation im MacPorts Verzeichnis nicht gebündelt ablegt sondern etwas zerfledert… anstelle eines einfachen gem install mysql war hier etwas mehr Finetuning nötig. Mittels der build-flags gelang mir dann aber auch das. Hier das Ergebnis:
sudo gem install mysql -- \
--with-mysql-dir=/usr/local/macports/lib/mysql5 \
--with-mysql-lib=/usr/local/macports/lib/mysql5/mysql \
--with-mysql-include=/usr/local/macports/include/mysql5/mysql
NACHTRAG, ab November 2008 so:
sudo env ARCHFLAGS="-arch ppc" gem install mysql -- --with-mysql-lib=/opt/local/lib/mysql5/mysql --with-mysql-include=/opt/local/include/mysql5/mysql
jetzt wird man gefragt, welche Version man für die Installation wählen will. Nehmen wir also die neuste, zum jetzigen Zeitpunkt mysql 2.7 (ruby), also drücken wir die 3 (da wir uns ja auf einem Mac befinden fallen die mswin32 Versionen für uns raus)
Select which gem to install for your platform (i686-darwin8.10.3)
1. mysql 2.7.3 (mswin32)
2. mysql 2.7.1 (mswin32)
3. mysql 2.7 (ruby)
4. mysql 2.6 (ruby)
5. Skip this gem
6. Cancel installation
Wenn man die build-flags nicht richtig setzt bekommt man solche Fehler:
ERROR: Failed to build gem native extension.
ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
und kann damit nicht so wirklich was anfangen… wie gesagt hat mich einiges an Zeit gekostet, weil auch Google dazu nicht richtig was sagt.
So nun sind auch die Bindings fertig und wir können uns anderen Dingen zuwenden.
Mongrel
Mongrel ist der Webserver. Rails liefert zwar schon einen Webserver mit (Webrick) aber Mongrel hat für mich bis her einen sehr sehr großen Vorteil, man sieht im Development Mode alle Requests. Damit fällt das Debugging viel leichter, da man sogar die MySQL Requests mit allen Werten sieht. Also installieren wir das Mongrel Gem einfach.
sudo gem install mongrel --include-dependencies
es kommen wieder die von oben bekannten Abfragen zur Version und weil es Abhängigkeiten gibt, die erfüllt werden müssen, wird gleich noch fastthread installiert. Meine Versionen sind mongrel 1.0.1 (2 drücken) und fastthread 1.0 (1 drücken).
Select which gem to install for your platform (i686-darwin8.10.3)
1. mongrel 1.0.1 (mswin32)
2. mongrel 1.0.1 (ruby)
3. mongrel 1.0 (mswin32)
4. mongrel 1.0 (ruby)
5. Skip this gem
6. Cancel installation
> 2
Select which gem to install for your platform (i686-darwin8.10.3)
1. fastthread 1.0 (ruby)
2. fastthread 1.0 (mswin32)
3. fastthread 0.6.4.1 (mswin32)
4. fastthread 0.6.4.1 (ruby)
5. Skip this gem
6. Cancel installation
> 1
Gut damit haben wir neben dem MySQL-Server nun auch unseren Webserver. Was jetzt kommt ist erst mal nicht so wichtig aber wir installieren es mal, damit wir uns später keine Gedanken mehr drum machen müssen.
Capistrano
Capistrano ist ein Deployment Tool, was einem die Arbeit des live gehens erheblich erleichtern soll. Ich hab es noch nicht benutzt und genau deshalb installiere ich es jetzt mit um es in den nächsten Tagen zu testen. Darüber wird es dann auch einen Post geben.
Neben dem hoch laden der Dateien mittels SSH, kann man noch eigene Rake Tasks in Ruby schreiben, die dann z.B. einen Dump der alten Datenbank erstellen, bevor die neue eingespielt wird. Naja wie gesagt, bei mehr Erfahrungen gibt es auch dazu einen Post, jetzt erst mal die Installation:
sudo gem install capistrano --include-dependencies
Jetzt noch Termios, dass dafür sorgen soll, dass die Passwörter, die man in Capistrano eintippt, nicht von allen gelesen werden können. Ich weiß nicht, ob das notwendig ist aber weh tun tut es ja auch nicht also:
sudo gem install termios --include-dependencies
Subversion
Subversion ist auch so nen Ding, worüber alle reden, was ich aber bis zum jetzigen Zeitpunkt, außer für Plugin Installationen, nicht genutzt habe. Capistrano nutzt es auch, also installieren wir auch noch dieses Tool. Eigentlich ist es einfach eine Versionskontrolle und wird meistens eingesetzt, wenn man in einem Team programmiert (es zeigt einem Konflikte an, d.h. zwei Leute haben zur gleichen Zeit an einer Datei, den selben Teil verändert, jeder natürlich anders und die Änderungen würden verlohren gehen. Hier springt dann eben SVN ein und man kann den Konflikt auflösen.)
sudo port install subversion
So damit haben wir eigentlich erst mal alles, was wir für die Entwicklung mit Ruby on Rails brauchen. Wenn es noch irgendwelche Sachen gibt, die man unbedingt braucht ab in die Kommentare damit.

Ich bin Manuel Wiedenmann, 25 Jahre alt und wohne zur Zeit in Lüneburg. Ich bin Student der Angewandten Kulturwissenschaften an der Leuphana Universität Lüneburg. Weiterhin bin ich freier Webentwickler und arbeite dabei mit Ruby on Rails und PHP.
hey Manuel
habe das mit mysql5 installieren wollen und so. habe mir macports draufgeschmissen und beim selfupdate spuckt der mir das heraus:
###
:~ xyz$ sudo port selfupdate
MacPorts base version 1.5 installed
Downloaded MacPorts base version 1.520
Configuring, Building and Installing new MacPorts base
Error: /opt/local/bin/port: selfupdate failed: Error installing new MacPorts base: shell command “cd /opt/local/var/macports/sources/rsync.macports.org/release/base && ./configure –prefix=/opt/local –with-install-user=root –with-install-group=admin –with-tclpackage=/Library/Tcl && make && make install” returned error 1
Command output: checking build system type… i686-apple-darwin8.10.1
checking host system type… i686-apple-darwin8.10.1
checking target system type… i686-apple-darwin8.10.1
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
:~ xyz$
###
hattest du dieses problem auch? und wie hast du es behoben?
oder gibt es für den mac nicht irgend ein package oder so?
hatte auch dannach direkt mal “install mysql5″ ausprobiert. hat dann aber auch was gefehlt.
falls zu zeit dafür opferst, vielen dank
lg adrian
du hast dich aber nicht genau an das tut gehalten oder?
macport ist auf jeden fall nicht, wie von mir beschrieben in /usr/local/macports… und damit geht der rest auch nicht unbedingt…
aber ich denke das problem ist, dass du xtools nicht installiert hast, deshalb hat der keinen c compiler… geh einfach erst mal das erste tut durch bis du macports richtig drauf hast und der path stimmt. danach sollte mysql kein problem sein…
das mit macports werde ich nochmal, wenn ich zuhause bin, probieren. Das kann sein, hatte das über ein package installiert also quasi alles ganz automatisch.
wegen xcode, meine ich habe das drauf, allerdings habe ich eine neuinstallation mal gemacht, könnte natürlich sein, dass ich das aus irgendwelchen unerklärlichen gründen nicht hab.
hoffe es klappt dann später.
Schönes Tutorial, aber ich wollte eigentlich macports nicht verwenden, stosse aber auf die gleichen Probleme wie du ursprünglich bei der Installation vom MySQL-gem. Aber auch nach dem korrekten Setzen der Pfade. Mein Installbefehl ist mittlerweile so lang wie die chinesische Mauer, funktionieren tut er aber trotzdem nicht:
sudo gem install mysql — –with-mysql-dir=/usr/local/mysql –with-mysql-lib=/usr/local/mysql/lib –with-mysql-include=/usr/local/mysql/include –ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
Noch ne Idee? Bin verzweifelt, möchte aber MacPorts trotzdem nicht nutzen.
hallo ulf,
du könntest mal ein paar sachen probieren:
which mysql_config
wenn er da was findet kannst du sudo gem install mysql — –with-mysql-config=/pfad machen
evt. liegt es auch an der Ruby Version. Benutzt du Tiger oder Leopard?
Wenn du Tiger benutzt, hast du Ruby von Hand nachinstalliert? Ich weiß nicht mehr wo aber ich hab mal gelesen die Tiger Version wäre kaputt.
Wenn dem so sein sollte probier mal das hier:
sudo gem install fixrbconfig
das sollte die rbconfig reparieren und dann sollten auch die bindings funktionieren…