Application permettant de contrôler l'accessibilité des sites Internet, et les obligations légales liés à celle-ci.
Production : https://acces-cible.beta.gouv.fr/
Staging : https://acces-cible.incubateur.net/
- Demandez la
master.key
à l'un des membres de votre équipe - Placez-la dans
config/
Pour démarrer le serveur, vous pouvez utiliser l'une des commandes suivantes :
Docker:
make up # docker compose up
# Autres commandes présentes dans le Makefile:
make cl # rails c
make sh # bash
ou, si ruby est installé sur votre poste (overmind est préconisé) :
bin/dev
Afin d'accéder à l'interface utilisateur des jobs, vous devrez aller sur http://127.0.0.1:3000/jobs
et entrer les
informations authentication présentes dans les credentials
.
- Pour lancer les seeds (
db/seeds/development.rb
)
# Docker
make sh
./bin/rails db:seed
# Local
bundle exec rails db:seed
- Dirigez-vous sur
http://localhost:3000
- Connectez-vous avec ProConnect et renseignez vos identifiants habituels
- OU
- Cliquez sur
Se connecter en mode développeur
- Renseignez:
Uid: [email protected]
Email: [email protected]
Given name: Test
Usual name: User
Siret: 12345678901234
Organizational unit: Engineering
- Framework : Ruby on Rails, ViewComponents, SolidQueue
- Tests : RSpec, Cucumber, Factory Bot
- UI : Composants DSFR (Design System de l'État Français)
- L'application est structurée en Modèle/View/Controller (MVC) avec une architecture REST, comme Rails le préconise.
- Plusieurs classes ne sont pas liées à des tables (PORO). Par exemple :
Browser
, une surcouche pour Ferrum, qui pilote Chrome.Crawler
,Page
,Link
,LinkList
,AxeViolation
,PageHeadingStatus
, ou encoreSiteUpload
. Parmi ces classes, celles dont les données n'ont pas vocation à être modifiées s'appuient sur le générateur Data.
- Les utilisateurs manipulent des sites, qui sont ensuite vérifiés (modèle Audit) selon plusieurs points de contrôle (
modèle Check). Les différents points de contrôles héritent de
Check
, ils sont placés dans le dossierchecks
. Les différents points de contrôle sont triés par priorité afin de gérer les dépendances entre les uns et les autres. - L'adresse des sites est stockée au niveau de l'audit, afin d'autoriser les sites à changer d'adresse (que ce soit en
passant au
https
, par l'ajout d'un sous-domainewww
, ou autre). Lors de la création d'un site, l'adresse saisie est donc comparée avec les adresses disponibles afin d'éviter des doublons. - Helpers : le module
ApplicationHelper
contient un certain nombre de fonctions permettant de simplifier la génération de liens avec icône, de composants DSFR internes au projet, etc. - Le titre des pages est obligatoire, il est généré automatiquement par la méthode
page_title
, soit en étant défini directement (@title
), soit viacontent_for(:title)
, soit en appelantto_title
sur la ressource affichée, soit via I18n ([contrôleur].[action].title
). - Les composants du DSFR, s'ils ne sont pas encore implémentés
dans DSFR view components, sont définis dans
app/components/dsfr/
. Une fois créés et stabilisés suite à leur usage dans le projet, les remonter dans la gemme pour que tout le monde en profite. - Pour simplifier la génération des textes,
human_attribute_name
est raccourci enhuman
et rendu disponible dans toutes les classes héritant d'ApplicationRecord
. Un helperto_percentage
est également proposé afin d'harmoniser l'affichage de ce type de chiffres.
- Le style Ruby suit les conventions Rails Omakase (style officiel de Rails)
- Utiliser des guillemets doubles pour les chaînes de caractères (
"exemple"
) - Utiliser des symboles plutôt que des chaînes quand les deux sont possibles
- La branche principale (
main
) est déployée en production - La branche de préproduction (
staging
) est déployée en staging - Les commits poussés sur la branche principale
utilisent Conventional Commits
Exemples de préfixes :
fix:
,feat:
,chore:
,ci:
,docs:
,style:
,refactor:
,perf:
,test:
, etc.
make sh # bash
./bin/rails db:setup RAILS_ENV=test
bundle exec rspec
bundle exec rspec spec/path/to/file_spec.rb:NUMÉRO_DE_LIGNE
bundle exec cucumber features/fonctionnalité_spécifique.feature
make lint
ou
bundle exec rubocop
bundle exec rubocop -a
Dans l'environnement Docker, vous pouvez utiliser debug
pour
arrêter et explorer votre code à un endroit précis :
- rajoutez un breakpoint avec l'appel
debugger
:
def some_method
+ debugger
a = "foobar"
end
- une fois le code arrêté :
web-1 | DEBUGGER: wait for debugger connection...
ouvrez un terminal et lancez make debug
qui se connecte
automatiquement au debugger.