ActiveRecord est l’une des premières classes que l’on apprend à utiliser avec Rails. Dans la vie d’un Rubyste, il est possible que l’on souhaite l’utiliser sans Rails pour l’exécuter dans un programme en ligne de commande ou dans une application utilisant Sinatra par exemple. Nous allons voir comment faire en quelques lignes.
Cet article est piloté par l’erreur. Je vais commencer par utiliser ActiveRecord comme je l’aurais fait avec Rails. Je vais ensuite implémenter le code en fonction des erreurs obtenues.
Code
Sans plus attendre, voici une classe permettant de créer le modèle, insérer un enregistrement et de les lister :
1 2 3 4 5 |
|
Évidemment, Ruby nous envoi l’exception uninitialized constant ActiveRecord (NameError)
. Pour corriger l’erreur, il suffit d’inclure le fichier active_record
.
1 2 3 4 5 6 7 |
|
L’exception suivante inscrit le message No connection pool for User (ActiveRecord::ConnectionNotEstablished)
. Il est nécessaire d’établir une nouvelle base de données.
1 2 3 4 5 6 7 8 9 |
|
Cette fois, l’erreur provient de SQLite et indique que la table users
n’existe pas. Comme avec Rails, il est possible de faire une migration.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Ça marche! Et non, ça ne marche pas tout à fait. La première exécution retourne
bien l’enregistrement, mais la seconde retourne une erreur provenant de SQLite
indiquant que la table existe déjà. Il est nécessaire de créer la table
uniquement si elle n’existe pas encore. Il est possible de le faire en
utilisant la fonction #table_exists?
de la classe User
.
Voici donc le résultat final :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Conclusion
Toutes les informations contenues dans cet article peuvent être trouvées sur le Github de rails. Comme dirait Avdi Grimm, Happy Hacking!