04-01-2013, 07:57 PM
(Modification du message : 05-01-2013, 04:11 PM par Sephi-Chan.)
(04-01-2013, 06:32 PM)Holy a écrit : Je comprends mieux l'intérêt des tests. Ca m'a l'air assez complexe à appréhender comme autodidacte, mais j'essaierai quand j'en aurai l'occasion histoire de pouvoir voir plus loin. Merci.
Il faudra probablement y dédier un peu de temps, mais ça vaut clairement le coup.
Le plus difficile est d'intégrer l'exécution des tests dans ton travail. Il faut configurer son éditeur pour lancer les tests sur lesquels on travaille (d'un simple raccourcis clavier).
Ecrire les tests en eux-même est assez simple. Tu peux jeter un œil aux tests unitaires de Conquest on Rails pour te donner une idée. Les fichiers importants sont le Gemfile, le fichier test_helper, les définitions de factories et les tests eux-mêmes.
(04-01-2013, 06:32 PM)Holy a écrit : Autre chose, l'optimisation de base de données (notamment tout ce qui concerne les champs) n'est pas faisable via Active Record à moins d'utiliser execute non ? Bête exemple : je suis obligé de créer des champs string de 255 octets pour un champ "sex" qui ne peut contenir dans les faits "que" 'homme', 'femme' (un champ 'enum'). Même chose pour certains integers qui ne peuvent aller que jusqu'à 9. Vu la philosophie prescriptive de Rails, je dois conclure que ce type d'optimisation est totalement superficiel et que les concepteurs de Rails préfèrent compter sur les validations de Rails pour ne pas corrompre la base de données ?
Note qu'un champ de type
VARCHAR
occupe toujours N + 1 octets, où N est la longueur de la chaîne. Ici, 255 n'est qu'une longueur maximale.Ensuite, ce que tu indiques est tout à fait faisable : jette un œil à la documentation du module
TableDefinition
. Tu peux utiliser l'option limit
pour spécifier la capacité d'une colonne.Enfin, tu peux utiliser tous les types que tu veux à la place de string, integer, etc. Mais tu perdras l'indépendance de la base de données. C'est notamment utile si tu veux utiliser des types de colonnes très spécifiques (par exemple
POINT
dans PostgreSQL).Rails a la réputation d'un framework tyrannique, mais pas à ce point ! :p