Visualiser les propriétés d’un Modèle dans son code
C’est peut-être parce que je viens de l’environnement .NET, mais s’il y a bien une chose qui m’a totalement perturbé lors de mon apprentissage du Ruby, c’est l’absence visuel des Getters/Setters directement dans la classe du modèle, et donc directement dans notre code.
J’avais l’habitude d’avoir ceci au sein de mon code :
namespace Classes;
public class User
{
public int Id { get; set; }
public string Password { get; set; }
public string Email {get; set; }
}
Et au debug ou lors d’une review, pouvoir directement avoir les informations sur mes modèles.
Mais en Ruby, cela ne se passe pas exactement comme je l’escomptais.
En effet, notre Modèle User va davantage ressemble à cela, lorsque nous le créons :
class User < ApplicationRecord
end
Et… Je ne sais pas immédiatement les propriétés de ma classe User.
Et pour moi, c’est un peu gênant en terme de compréhension de code et d’efficacité dans le debug.
La solution : Utilisation du Gem Annotate
Et j’ai découvert ce fabuleux package qui a plus de 33 millions de téléchargements !! Autant dire que je ne suis pas la seule à avoir trouvé cette absence de propriété embêtante !
Ce package n’est autre que Annotate
Une fois installée via un gem install annotate -v 2.7.1
(dernière version au moment de l’article) je n’ai qu’à faire dans mon terminal (à la racine de mon projet) :
annotate --models
Et cela me permet immédiatement d’avoir un modèle qui ressemble à ceci :
# == Schema Information
#
# Table name: users
#
# id :bigint not null, primary key
# password :string
# username :string
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ApplicationRecord
include ActiveModel::Model
def self.attributes
[:id, :username, :password, :email, :created_at, :updated_at ]
end
attr_accessor *self.attributes
end
De plus, il est configurable en générant un fichier .rake qui va permettre de tout définir par défaut (annotation des modèles, des views, des controlleurs etc).
rails g annotate:install
Je vous conseille de lire la documentation ici pour vraiment l’adapter à vos besoins !
C’est déjà un peu mieux !!