Bon, une fois n’est pas coutume, je fais juste un petit article technique suite à quelques soucis rencontrés lors d’une migration d’un site tournant sur Rails 1.2.4 vers la version 2.2.2. Rien d’intéressant si vous ne travaillez pas vous même avec Ruby on Rails.
C’est une simple collecte de réponses, trouvées à droite à gauche, valable si vous travaillez sous Windows XP SP2 avec une version de MySQL 5.1. Pour les autres plateformes, je ne me suis pas documenté.
Tout d’abord, lors de la migration de la version 1.2.4 vers 2.2.2, l’erreur suivante apparait :
The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Rien d’insurmontable, il suffit de faire ce que dit le monsieur, « gem install mysql », dans la console Windows.
Ensuite, je suis tombé sur une autre erreur :
Status: 500 Internal Server Error - CGI::Session::CookieStore::TamperedWithCookie
Là aussi, erreur simple à corriger puisqu’il s’agit d’un problème de cookie. Pour ma part, supprimer les cookies côté navigateur et vider les dossiers temporaires de Rails auront suffit.
Erreur suivant provoquant un crash pur et simple de ruby est l’absence de la librairie libMYSQL.dll dans le dossier bin de ruby. Si vous avez une version MySQL 5.0 ou antérieure, il suffit de récupérer la DLL du dossier bin de votre intallation MySQL et de le copier dans le dossier bin de ruby. Par exemple, copiez depuis C:\Program Files\MySQL 5.0\bin\libmysql.dll vers C:\Ruby\bin. Il vous suffit de redémarrer le serveur et ça ira comme sur des roulettes.
En revanche, si vous avez une version 5.1 de MySQL (la version stable au moment de l’écriture de cet article), il vous faudra ruser car vous tomberez sûrement sur l’erreur suivante :
LoadError (998: L’accès à cet emplacement de la mémoire n’est pas valide. - C:/Ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so)
Il semblerait qu’il s’agisse d’un bug MySQL (http://forums.mysql.com/read.php?116,153569,155279#msg-155279) et, pour résoudre ce dernier souci, il vous suffit de télécharger une version antérieure de MySQL sans installeur (typiquement 5.0), de décompresser l’archive et de copier la librairie bin/libmysql.dll vers le dossier bin de Ruby.
The end. Hope that helps!
Nicolas MySQL, Ruby on Rails, Technique 1.2.4, 2.2.2, migration, mysql, rails, RoR
Commentaires récents