First, you have to know that developers of ROR (Ruby on Rails) prefer to use SQLite for Rails projects. But MySQL is widely used on the Web so when you want to develop on your local machine before to deploy it, you have to use MySQL too.
Mac users use often MAMP which install Apache and MySQL easily, but it’s to use principally PHP. Here we’ll see how to use MAMP to have a MySQL database for our Ruby on Rails project.
First, you need to download MAMP and its sources. For that go on MAMP’s SourceForge page. Choose the latest version (actually 1.7.2) and download the two files (MAMP_x.x.x.dmg.zip and MAMP_x.x.x_src.zip ).
Now start to install MAMP : decompress the MAMP_x.x.x.dmg.zip archive, open the .dmg file and drag&drop the MAMP folder in your /Application folder.
When you did that, you can decompress the archive which contains MAMP’s sources (MAMP_x.x.x_src.zip). Then open your Terminal and go in the directory just created with the cd command.
Since you’re in the directory named MAMP_x.x.x_src execute the following commands :
tar -xzvf mysql-5.0.41.tar.gz cd mysql-5.0.41 |
Of course if you have a later version of MySQL you’ll have to adjust them, the easier way is to type “mysql-” and to press on the tab key. Now, we have to configure and compile MySQL, enter these commands :
./configure --with-unix-socket-path=/Applications/MAMP/tmp/mysql/mysql.sock --without-server --prefix=/Applications/MAMP/Library make -j2 |
Now, copy compiled librairies in MAMP folder :
cp libmysql/.libs/*.dylib /Applications/MAMP/Library/lib/mysql mkdir /Applications/MAMP/Library/include cp -R include /Applications/MAMP/Library/include/mysql |
And now, we can install MySQL for Ruby using Gem :
sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config |
And you will have a pretty :
Building native extensions. This could take a while... Successfully installed mysql-2.7 1 gem installed |
That’s all, MySQL is ready for Ruby =)
Now, let’s see how to create a new Rails project and configure it to use MySQL. When you create the Rails project with the rails
rails
-d mysql
After did that, go in the folder created by Rails (i.e
Change it to have a one which looks like to this one :
development: adapter: mysql encoding: utf8 database: <project_name>_development pool: 5 username: root password: root host: localhost socket: /Applications/MAMP/tmp/mysql/mysql.sock |
Of course, you can also use those options for categories named test and production.
This article is now finished and I hope it will be usefull. If you have any problem or question, please leave a comment ;-)
Bonjour,
j’ai un problème au niveau de la ligne
./configure –with-unix-socket-path=/Applications/MAMP/tmp/mysql/mysql.sock –without-server –prefix=/Applications/MAMP/Library
le terminal me dit :
checking build system type… i686-apple-darwin9.6.0
checking host system type… i686-apple-darwin9.6.0
checking target system type… i686-apple-darwin9.6.0
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for gawk… no
checking for mawk… no
checking for nawk… no
checking for awk… awk
checking whether make sets $(MAKE)… no
checking “character sets”… default: latin1, collation: latin1_swedish_ci; compiled in: latin1 latin1 utf8
checking whether to compile national Unicode collations… yes
checking whether build environment is sane… yes
checking whether make sets $(MAKE)… (cached) no
checking for gawk… (cached) awk
checking for gcc… no
checking for cc… no
checking for cc… no
checking for cl… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
Merci de m’aider
Il semblerait qu’il te manque pas mal d’outil de compilation (make, gcc etc…)
Il faut que tu installe les Developer Tools de Leopard qui sont sur ton DVD d’installation ou quelque part sur http://developer.apple.com/ si tu souhaite avoir les dernières version d’Xcode et tout les autres outils (je te le conseille ;-)
Normalement ça installera tout les outils qu’il te manque. Ensuite tu pourra recommencer là où ça bloquait, à savoir le “./configure [...]”
Si tu as encore des soucis n’hésite pas ;-)
Merci,
Ca à l’air bon maintenant
Autre problème :(
lorsque je tape rake db:migrate à la racine de mon projet, j’obtiens ceci :
(in /Users/bubu_unam3d/Documents/Sites/PFE/ViseMode)
rake aborted!
Client does not support authentication protocol requested by server; consider upgrading MySQL client
(See full trace by running task with –trace)
Merci d’avance.
PS aurais-tu des tutos intéressant sur RoR ?
Hum je n’ai jamais eu ce problème, je ne vois pas trop de quoi ça peut venir :-/
As tu bien modifier le fichier config/database.yml afin d’utiliser le bon chemin pour la socket ?
Es tu sur que les identifiants que tu as mis dans le fichier config/database.yml sont bon ?
Afin d’avoir plus d’infos, essai d’exécuter plutôt la commande
rake db:migrate –trace
Par contre copie-colle le résultat sur ce site et passe moi le lien car ça risque d’être long ^^ http://pastie.org/
Sinon pour les tutos sur RoR, je n’ai pas trouvé grand chose, les livres qui existent sont déjà obsolète donc ils ont un intérêt limité, et la doc française semble aussi peu fournie. Bon après je n’ai sûrement pas assez cherché, mais j’ai préféré me rabattre sur la documentation officielle. Quelques liens :
Wiki : http://tinyurl.com/dd225p
Wiki français (traduction partielle) : http://tinyurl.com/amfhke
Getting Started : http://tinyurl.com/6npdgo
Normalement avec tout ça tu devrais t’en sortir, c’est en tout cas ma principale source d’infos pendant mon apprentissage.
Et oui, il faut savoir que je débute avec Ruby et Ruby on Rails, j’ai commencé il y a deux semaines environs et en période de stage + révisions c’est pas facile de trouver le temps de coder un peu. Obligé de prendre sur les heures de sommeil ^^
mon fichier database.yml est correct :
adapter: mysql
encoding: utf8
database: ViseMode_development
pool: 5
username: root
password: root
host: localhost
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Mais apparemment il semble ne pas trouver le sock alors qu’il est bien là :s
Voici le lien de Pastie : http://pastie.org/403665
Sur le temps de travail je te comprend, je suis moi aussi en stage et je n’ai que les week end pour travailler sur mon projet de fin d’étude.
Ok j’ai ciblé d’où provenait l’erreur, en faite mysql 5.0 utilise un autre algorithme de hack donc j’ai créer un nouvelle utilisateur de base de donnée mais sans mot de passe et apparemment ça marche maintenant. Mais bon quand je passerais en production il me faudra un mot de passe donc j’aurais quand même le problème par après :(
Je pense que la version mysql que j’ai pour ruby est la 2.7 :s Comment la mettre à jour ?
En attendant je vais aller tester si ça marche bien, croisont les doigts ;-)
Jolie tuto, je viens de tester et ça fonctionne bien ;)
Moi j’avais installé mysql sans MAMP dans un premier temps, mais c’est vrai que c’est plus pratique comme ça.
Bon tutorial : permet d’installer facilement un environnement de dev RoR sur macos x, avec MAMP.
Merci !
Merci pour ce tuto, ça a résolu le problème que j’avais entre rails 2.2 et mysql !
:D
bonjour,
j’ai telechargé la meme version de mamp que toi.
j’ai un problème lors de cette ligne:
cp libmysql/.libs/*.dylib /Applications/MAMP/Library/lib/mysql
En fait il me trouve pas le dossier .libs.
Est ce normal?
Merci
Non ce n’est pas normal, surtout si tu as prit la même version que moi…
Là je vois pas trop de quoi ça pourrait venir :-/
je ne vois pas non plus le dossier include dans /Applications/MAMP/Library/include.
Merci
Pour le dossier include c’est normal, tu es censé le créer avec cette commande qui est dans le tuto :
mkdir /Applications/MAMP/Library/include
(mkdir = make directory)
ok.
Dans mon dossier libmysql, j’ai que ces fichiers :
CMakeLists.txt conf_to_src.c libmysql.ver.in
Makefile dll.c manager.c
Makefile.am errmsg.c mytest.c
Makefile.in get_password.c password.c
Makefile.shared libmysql.c
client_settings.h libmysql.def
C’est peut être une histoire de fichiers cachés?
Merci
Attends…
Est ce que c’est quand tu entres la ligne
cp libmysql/.libs/*.dylib /Applications/MAMP/Library/lib/mysql
dans ton terminal qu’il te dit que .libs n’existe pas, ou bien tu déduis qu’il n’existes pas car tu es allé voir dans le Finder ?
Si c’est parce que tu es allé voir dans le Finder, alors oui c’est normal, un fichier ou dossier qui commence par un point est un fichier caché. Mais la commande cp est quand même censée fonctionner.
Je ne suis pas allé dans le finder.
Je suis dans la console dans le dossier mysql-5.0.41et je tape la commande.
IL me dit “no such file …”.
reprend le tuto depuis le début et tu me copie colle tout le contenu de ton terminal sur http://www.friendpaste.com/ et tu me donnes le lien.
C’est bon maintenant.
J’ai dû faire une mauvaise manip.
Merci !
J’ai du mal à lier MAMP et Rails.
En fait mon MAMP est accessible sur le port 8888 de localhost et mon appli rails sur le port 3000.
Donc impossible de les lier.
COmment faire stp?
Merci