A propos

Pourquoi Grafikart.fr ?

Le site a été développé pendant mon année de DUT pour permettre de partager plus efficacement mes connaissances et aider les autres élèves. Au départ orienté vers le graphisme (d'où le nom) le contenu a ensuite suivi mon évolution pour se tourner de plus en plus vers le développement Web.

Lors de mon apprentissage j'ai remarqué qu'il était très difficile de trouver du contenu de qualité en français concernant le développement Web. C'est pourquoi je souhaite aujourd'hui proposer au plus grand nombre du contenu pour permettre à tous d'évoluer et d'apprendre de nouvelles choses.

Qui s'occupe du site ?

Pour le moment je m'occupe seul de l'administration et de la gestion du site.

Comment cette page est affichée ?

Beaucoup de gens se demandent souvent comment est fait le site. Le site sur lequel vous êtes est propulsé par plusieurs technologies :

  • Le serveur qui répond à vos requêtes est hébergé chez So you Start et est équipé du système d'exploitation Debian,
  • Le site a été développé en utilisant le langage Ruby avec le framework Ruby on Rails
  • nginx gère les requêtes HTTP
  • MySQL stocke les données
  • Elasticsearch gère la recherche
  • Phusion Passenger fait la liaison entre Ruby on Rails et nginx
  • memcached gère la mise en cache des données
  • Git est utilisé pour versionner le code du site (et surtout ne rien perdre)

Ruby intègre un système permettant de télécharger et d'installer rapidement des librairies externes dans son application : les gems. Voici donc une liste des gems utilisées pour faire fonctionner Grafikart.fr.

Helpers HTML

Ecrire du code HTML c'est toujours chiant car on doit trop souvent se répéter. Heureusement Ruby et Rails possèdent de nombreuse librairies pour économiser du temps. Pour la création des "vues" j'ai choisi d'utiliser le moteur de template slim, bien que très déstabilisant au début il permet d'avoir un code beaucoup plus clair.

  • slim-rails, permet d'utiliser le moteur de template slim dans Rails
  • simple_form, pour générer des formulaires HTML plus simplement et avoir une syntaxe cohérente sans écrire 10 lignes
  • country_select, comme son nom l'indique permet de créer un select de tous les pays
  • rails-autolink, détecte les URLs dans une chaine de caractère et l'entoure d'un lien (utilisé pour les commentaires)
  • github-markdown, permet de convertir le markdown en HTML.

Authentification

Le processus d'authentification est très répétitif. Rails dispose d'une librairie très poussée qui permet de gérer la pluspart des cas. On peut ajouter de nouvelles méthodes d'authentification, comme par exemple omniauth pour gérer l'authentification via des services tiers.

API système

Certaines gems permettent de communiquer plus simplement avec le système en offrant une approche objet pour utiliser des fonctions Linux.

API Web

Quand on développe un site on aime bien le faire communiquer avec diverses API (pour qu'il se sente moins seul) :

  • paypal-express, permet d'appeller PayPal express checkout. La librairie est assez verbeuse donc j'ai recréé un concern par dessus. (je vous conseille de faire de même pour ne pas surcharger vos controllers)
  • twitter, pour récupérer mes dernier gazouillement pour le footer
  • yt, pour communiquer avec youtube (utile pour le backend et la page live)
  • aws_cf_signer, permet de signer des liens AWS (utilisés dans la partie formation pour streamer les vidéos premiums avec JW Player)

Divers

Toutes les gems ne rentrant pas dans des cases...

Pour les tests

Tous le site n'est pas testé mais certaines fonctionnalités critiques ont besoin d'être vérifiées de manière complètement automatique.
Les tests permettent de ne pas avoir à essayer les choses manuellement et ainsi éviter certains bugs avant qu'ils arrivent :

Pour le déploiement

Le FTP c'est so 2010

  • capistrano, permet de déployer une application en un clin d'œil depuis un dépôt Git
  • capistrano-rails, contient les tâches liées au déploiement d'une application Ruby on Rails