Si vous avez déjà utilisé Active Record. Et vu que vous lisez ce blog et cet article, je suppose que c’est le cas, même si vous n’en savez peut-être rien.
Dans le cas ou votre mémoire vous jouerai des tours, voici un petit rappel. Active Record est une librairie utilisée dans Ruby on Rails et permettant aux applications de manipuler de manière aisée les bases de données.
C’est compatible avec MySQL, SQLite et PostgreSQL (il est cependant tout à fait possible de développer son propre adaptateur).
Mais Rails est un framework pour applications web. Et le web ne se résume pas au développement web.
Du coup nous allons voir comment implémenter et utiliser Active Record dans votre application console.
Tout d’abord, vous devez installer la librairie. Si vous avez déjà installé Rails sur votre machine, vous êtes prêt à démarrer. Dans le cas contraire, tapez la commande suivante en console :
gem install activerecord
Cela téléchargera la dernière version stable de la librairie et l’installera sur la machine.
Maintenant commençons à nous amuser un peu en développant
Créez un nouveau document que vous appellerez (par exemple) main.rb
Tout d’abord, vous devez appeller les librairies rubygems et activerecord.
require 'rubygems'
require 'active_record'
Avec ces lignes en haut de votre document, vous avez maintenant accès à toutes les méthodes fournies par Active Record.
Du coup, autant les utiliser.
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:host => 'localhost',
:user => 'root',
:password => 'root',
:database => 'test'
)
Ceci initialisera la librairie.
Cependant, cela ne vous connectera pas à la base de données. Vous ne le serez que lorsque vous ferez votre première requête.
Maintenant, créons un modèle.
Je vous invite à ne pas le créer dans le document, pour des raisons de propreté de l’application. Créons donc un document nommé « user.rb » dans le même répertoire que votre main.rb.
Placez le code suivant dans votre nouveau document :
class User < ActiveRecord::Base
end
Et dans votre main.rb, appellez le :
require 'user'
Vous avez maintenant accès, dans votre main.rb, à l’objet User, qui hérite de ActiveRecord::Base et vous fournit donc toutes les méthodes habituellement utilisées dans les modèles Ruby on Rails. Vous n’êtes cependant pas dans une application Rails.
Du coup récupérons tous nos utilisateurs.
p User.find(:all)
Si votre table « users » existe dans la base de données « test », ceci affichera dans votre console un bump du hash de tous vos utilisateurs.
Vous pouvez donc maintenant faire tout ce que vous faites habituellement dans vos modèles Ruby on Rails. En passant par les associations entre modèles, en passant par les validations. Et même les migrations (ceci fera cependant l’objet d’un second article).
Mais attendez ce n’est pas tout. Jusqu’à maintenant, nous avons défini nos paramètres de configuration directement dans l’application. Et c’est très très mal. Du coup nous allons ajouter un document database.yml externe :
adapter: mysql
host: localhost
username: root
password: root
database: refcrawler_dev
Et pour charger ces paramètres de connexion dans notre document :
require 'yaml'
dbconfig = YAML::load(File.open('config/database.yml'))
ActiveRecord::Base.establish_connection(dbconfig)