Application de gestion de recrutements.
Application Ruby on Rails avec base de données PostgreSQL, assets compilés via esbuild et suite de tests utilisant RSpec.
Installation des dépendances
bundle install
yarn install
Créer un fichier .env à la racine du projet contenant les valeurs :
DEFAULT_FROM=hello@localhost
DEFAULT_HOST=http://localhost:3000
LOCKBOX_MASTER_KEY=
Optionnellement ce fichier .env peut contenir les variables suivantes pour configurer un Object Storage basé sur OSU/S3 :
OSC_AK=access_key
OSC_SK=secret_key
OSC_BUCKET=bucket_name
OSC_REGION=eu-west-2
OSC_ENDPOINT=https://osu.eu-west-2.outscale.com
Créer la base de données avec les données de seed :
bin/rails db:drop db:create db:schema:load db:seed
Pour démarrer l'application localement :
bin/dev
Le workflow de développement est basé sur le GitHub flow :
La bonne manière de créer une Pull Request est de :
git checkout master && git pull && git checkout -b fix/13
git push origin fix/13
Pour lancer les test RSpec :
bundle exec rspec
Pour lancer l'outil d'analyse statique de formatage Rubocop :
bundle exec rubocop
Pour lancer l'outil d'analyse statique de vulnérabilités Brakeman :
bundle exec brakeman
Pour exécuter les jobs asynchrones :
bundle exec sidekiq
Les branches master et production sont déployées automatiquement grâce à Scalingo.
Pour chaque Pull Request créée, une application de review est automatiquement démarrée par Scalingo.
Avant de déployer le code, il faut définir la variable d'environnement DO_NOT_POSTDEPLOY=1
.
Ceci a pour effet de ne pas lancer automatiquement la tâche db:migrate
dans la phase postdeploy
.
Il faudra supprimer la variable d'environnement après un premier déploiement en success
.
Lancer le déploiement puis charger le schéma de données :
bin/rails db:schema:load
Supprimer la variable d'environnement DO_NOT_POSTDEPLOY
.
Créer la première organisation
organization = Organization.create!(
brand_name: "...",
service_name: "...",
prefix_article: "..."
)
Créer le premier compte admin
admin = Administrator.new(
email: 'prenom.nom@domaine.com',
first_name: 'Prénom',
last_name: 'Nom',
password: '12 caractères minimum (1 majuscule, 1 minuscule, 1 chiffre et 1 caractère spécial)',
very_first_account: true,
role: 'admin',
organization: organization
)
admin.skip_confirmation_notification!
admin.save!
admin.confirm
SMTP_URL=smtp://username_url_encoded:password@host:port