Migrer une application Rails vers MariaDB

ruby rails mysql mariadb raspberrypi

Je ne me suis jamais posé la question et j’ai toujours utilisé MySQL pour mes projets Ruby on Rails. Jusqu’au jour ou j’ai acheté un Raspberry Pi 3 pour remplacer mon serveur Raspberry Pi 2. Et là.. impossible de remettre la même configuration… Au lieu de m’en têter à installer MySSQL, j’ai décidé de migrer vers MariaDB qui est officiellement supporté par Raspbian.

On commence donc par installer MariaDB sur le Raspberry Pi.

$ sudo apt install mariadb-server libmariadb-dev

La petite subtilité par rapport à MySQL est que rien n’est affiché pour spécifié l’utilisateur par défault. Pour se connecter il suffit de lancer mariadb avec sudo:

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

On commence donc par sécuriser notre serveur avec la commande

$ sudo mysql_secure_installation 
$ # on peut aussi le faire à la main
$ sudo mysql -e "CREATE USER 'pi'@'localhost' IDENTIFIED BY 'pi'"
$ sudo mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'pi'@'localhost' WITH GRANT OPTION"

Et pour tester que tout c’est bien passé, on se connecte de la même façon qu’on le faisait avec MySQL

$ mariadb -u pi -ppi

La bonne nouvelle, c’est qu’au niveau de l’application Ruby On Rails nous n’avons pas besoin de changer quoique ce soit:

# Gemfile
gem 'mysql2'
# config/database.yml
development:
  adapter: mysql2
  database: fooder
  pool: 5
  encoding: utf8
  username: pi
  password: pi
  host:  localhost

Donc il suffit de lancer les migrations et lancer notre serveur de développement.

$ bundle install
$ rake db:create
$ rake db:migrate
$ rails s

Si tout pouvait être aussi simple…