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 !!

Vous aimerez aussi...