Enfin! Avec l’aide de Brice (parce que je suis archi-nul en commandes linux), j’ai réussi à installer les gems DBI et MySQL pour Ruby. Le module DBI permet d’avoir une interface pour gérer les bases de données en Ruby. Je voulais utiliser MySQL donc j’ai aussi installé MySQL puis la gem MySQL pour DBI.

Installation de MySQL

Sous Ubuntu, j’ai fait :

sudo apt-get install mysql-server

Ensuite, j’ai créé un accès et une base de données pour pouvoir l’utiliser par la suite en Ruby :

mysql> GRANT ALL ON test.* TO 'testuser'@'localhost' IDENTIFIED BY 'testpass';
mysql> CREATE DATABASE test;

J’ai donc une base appelée “test” à laquelle je peux accéder avec le login “testuser” et le mdp “testpass”.

Installation des gems DBI et MySQL

Quand je parle de “gems”, je parle de RubyGems, un gestionnaire de paquets pour Ruby. En gros, c’est des plugins pour Ruby. On va d’abord installer le gem DBI :

gem install dbi

Pour le gem MySQL par contre, j’ai du faire une manip spéciale :

sudo apt-get install libmysqlclient15-dev
sudo gem install mysql
sudo gem install dbd-mysql

J’ai installé une lib spéciale : libmysqlclient15-dev. Je ne sais pas trop ce que c’est mais ça a marché. Puis j’ai installé les gem mysql et dbd-mysql. Le dernier permet au module DBI de pouvoir interagir avec MySQL.

Test de MySQL dans Ruby

J’ai pu lancer un script DBI qui utilise la base de données créée au début :

require "dbi"
 
begin
# connect to the MySQL server
dbh = DBI.connect("DBI:Mysql:test:localhost", "testuser", "testpass")
# get server version string and display it
row = dbh.select_one("SELECT VERSION()")
puts "Server version: " + row[0]
rescue DBI::DatabaseError => e
puts "An error occurred"
puts "Error code: #{e.err}"
puts "Error message: #{e.errstr}"
ensure
# disconnect from server
dbh.disconnect if dbh
end

Ca me donne :

Server version: 5.0.75-0ubuntu10

Whaou! Enfin! Gagné! J’ai en réalité installé beaucoup d’applis et beaucoup de gems, mais je pense que l’essentiel est là. Si quelqu’un suit ces manips, merci de me dire si c’est suffisant ou pas. :-)