Ici et ailleurs

Le blog d’un joueur … mais pas que le blog de Sky.

Ruby on Rails : Mise en route

Aujourd’hui, nous allons nous intéresser à Ruby on Rails. Et quoi de mieux que de monter un projet et de partager tout le développement de ce projet pour apprendre à me servir d’un langage qui m’ait inconnu ? Je vais donc partager sur ce blog toutes mes recherches pour mener à bien ma mission, le développement d’une to-do liste en Rails ! Le cahier des charges sera défini plus tard, nous allons d’abord nous familiariser avec l’environnement et le langage de développement.

Suite à ce projet, je ferais une suite de tutoriels du même genre pour créer une application Android permettant d’interagir avec ce qui aura été fait.

Soyons clair, je ne connais quasi rien au Ruby, je vais donc partir de zéro, en revanche, je pars du principe que vous avez des connaissances en ce qui concerne la POO, au niveau de l’environnement de travail, voici ce que je vais utiliser :

Si vous utilisez un autre OS, pas de problèmes, procurez vous la version adaptée de Ruby ici.

Quelques sites qui vont me permettre de mener à bien ma mission : le blog de KazOo, 29 minutes par jour, les guides officiels, et quelques sites comme sitepoint.com, cette liste n’est pas exhaustive.

Dans cette première partie, nous allons donc mettre en place notre environnement de travail et le tester afin de partir sur de bonnes bases. Télécharger donc tous les outils nécessaires. L’installation de MySQL est toute simple et ne devrait pas vous poser de problèmes. MySQL WorkBench est une interface graphique pour gérer la base de données, pas indispensable, je trouve juste ça plus pratique. A noter qu’on pourrait utiliser un autre SGBD, j’ai choisi MySQL pour sa popularité principalement.

Lors de l’installation de Ruby, penser à cocher Add Ruby executables to your PATH, de cette manière, les commandes seront disponibles directement dans la console.

Qu’est ce que Rails ?

Rapidement et sans rentrer dans les détails, c’est un framework construit en Ruby qui est un langage de programmation interprété. Le but de Rails est de pouvoir créer des applications web bien pensées, réutilisables et en prenant du plaisir. Pour cela, Rails exploite le design pattern MVC, dont on entend beaucoup parler qui divise le code en 3 parties :

  • Le modèle : responsable des données,
  • La vue : responsable de l’interface utilisateur, de l’affichage des données,
  • Le contrôleur : réel chef d’orchestre de toute la machine, il passe par le modèle pour récupérer les données dont il a besoin puis les envoie à la vue.

Rails est fournit avec plusieurs composants destinés à nous faciliter le développement, voici la liste, si vous voulez plus d’informations sur ces composants, direction le guide Rails :

  • Action Pack
    • Action Controller
    • Action Dispatch
    • Action View
  • Action Mailer
  • Active Model
  • Active Record
  • Active Resource
  • Active Support
  • Railties

On reviendra sûrement sur ce design pattern et ces composants (notamment Active Record)  lorsque nous commencerons à mettre les mains dans le cambouis.

La magie des gems

Le Ruby est donc un langage interprété, au même titre que le PHP. Il est de plus orienté objet. Ce qui est génial, ce sont les Rubygems. Penser à une sorte de repository contenant une multitude de blocs (application ou bibliothèque) qu’il est possible d’installer à votre gré pour disposer de nouvelles fonctionnalités. Rails est une gem et c’est donc pour cela, qu’une fois Ruby installé, vous pouvez ouvrir la console Windows et taper ceci :

gem install rails

Rubygem va ensuite installer ce dont vous avez besoin pour pouvoir utiliser Rails. Vous pouvez essayer de taper rails dans la console, elle devrait vous afficher toutes les options disponibles, synonyme que rails est bien installé. Pour prendre de l’avance, on peut déjà taper :

gem install mysql2

Qui est l’adaptateur qui nous permettra de communiquer avec la base de données MySQL.

Création et configuration de notre application

Nous allons maintenant créé notre application, très simplement, en tapant, toujours dans la console, après avoir naviguer à coup de cd dans le répertoire où vous souhaitez mettre votre application :

 rails new japprends

“japprends” est le nom de votre application. Une liste de lignes vous informant de la création de toute la structure de votre application défile alors. Dirigez-vous vers le dossier créé et observons rapidement ce répertoire (certains fichiers/répertoires) sont volontairement omis.

Toutes les commandes suivantes devront être tapées dans le dossier de votre application

Fichier / Dossier Fonction
Gemfile Défini quelles gems sont nécessaires pour faire tourner notre application.
README Un README pour vous diriger sur ce que vous pouvez faire pour commencer.
Rakefile Contient des routines pouvant être exécutée via la console, on y reviendra.
app/ Contient les contrôleurs, vues et modèles, sûrement l’endroit où nous passerons le plus de temps.
config/ Configuration de la base de données, des routes, etc..
db/ Représentation de la base de données et des migrations, permet entre autre de garder une trace de tout ce qui va être fait sur la bdd.
doc/ La documentation de notre application.
lib/ Bibliothèques supplémentaires éventuelles pour notre application.
log/ Fichiers journaux de l’application.
public/ On mettra ici tout ce qui est statiques, comme le JS, les feuilles de style, les images.
script/ Contient les scripts nécessaires pour lancer l’application.
test/ Tests unitaires pour notre application.
tmp/ Fichiers temporaires, cache, sessions, ..
vendor/ Tous les objets tiers, des objets n’étant pas encore disponibles sous forme de gem par exemple.

Etant donné que j’apprends en même temps que vous, certains points seront éclaircis au fur et à mesure.

Ouvrez le fichier Gemfile avec votre éditeur de texte favori. Comme nous l’avons dit plus haut, ce fichier regroupe les gems nécessaires au bon fonctionnement de notre application. Comme nous n’utiliserons pas SQLite, nous pouvons commenter la ligne s’y rapportant, en revanche, nous utiliserons mysql2 comme adaptateur, nous allons donc le préciser dans ce fichier. On se retrouve donc avec un fichier de ce genre :

source 'http://rubygems.org'

gem 'rails', '3.0.1'
gem 'mysql2'

On a donc précisé ce dont on allait avoir besoin, on peut maintenant lancer l’installation des gems nécessaires à notre application avec (toujours dans le répertoire de notre application) :


bundle install

Étant donné qu’on avait déjà installé la gem mysql2 plus haut, cette étape est inutile, il était néanmoins nécessaire de la connaître.

Ok, donc nous y sommes presque, il nous reste juste à configurer notre base de données, pour cela, direction le dossier config/ puis ouvrez le fichier database.yml. Configurez le selon votre base de données, dans notre cas, puisque nous utilisons une base MySQL, il ressemblera à ceci :


development:
adapter: mysql2
encoding: utf8
database: japprends_development
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.

test:
adapter: mysql2
encoding: utf8
database: japprends_test
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

production:
adapter: mysql2
encoding: utf8
database: japprends_production
pool: 5
username: root
password:
socket: /tmp/mysql.sock

On remarque alors qu’une application rails est décomposée en 3 “phases” : development, test et production. On y reviendra sûrement, pour le moment, nous travaillerons dans la configuration de développement (development).

Lancer MySQL Server si ce n’est pas déjà fait, normalement, un service MySQL devrait être démarré. Pour être sûr, vous pouvez vous connecter à votre base avec MySQL Workbench. Bien, on a donc indiqué dans notre configuration de rails, que la base de données de développement porte le nom de japprends_development or, elle n’est pas encore créée, laissons donc rails s’en occuper. Nous allons utiliser rake qui nous fournit des scripts déjà tout prêt. C’est parti !


rake db:create

Cette ligne nous crée 2 bases de données vides : japprends_development et japprends_test. Vous pouvez vérifier, si tout s’est bien passé, elles sont là.

Dernière étape, tester que notre environnement fonctionne en lançant le serveur HTTP simplifié fournit avec Rails : WEBrick, qui sera pour le moment suffisant. Pour cela rien de plus simple, taper dans la console et toujours dans le dossier de votre application :


rails server

Le serveur se lance, direction votre navigateur et rendez vous à l’adresse http://localhost:3000, vous devriez voir apparaître la fenêtre ci-dessous, cliquez sur About your application’s environment pour s’assurer que la connexion à votre base de données s’est bien effectuée.

It works!

It works!

Cette première partie est donc terminée, j’espère avoir été assez clair dans mes propos. Avant de s’attaquer pleinement à Rails, le prochain article traitera de la syntaxe du Ruby, on pourra alors s’intéresser à ce merveilleux framework que semble être Rails !

See Ya!

Tags: , , , , ,

6 commentaires pour “Ruby on Rails : Mise en route”

  1. Sylario dit :

    Rails déchire du boudin, malheureusement, il a été pensé pour les OS d’adultes et déjà que l’environnement est pas évident à mettre en place sous Linux ou sous mac OSX, a chaque fois que j’ai déployé mon environnement de dev sous windows, c’était très tendu. Tu rajoute par la dessus GIT, le successeur (enfin!) de CSV et tu comprend ta douleur.

  2. odisseus dit :

    Les problèmes sous windows, y en a aussi pas mal dès que tu touches à des gems un peu bas niveau.

  3. Sylario dit :

    J’avais voulut bosser sur le code de Wefrag (codé en RoR) mais je m’étais cassé les dents sur le déploiement du code, notamment une librairie graphique qui était super chaude à déployer sous windows. Ce qui est étrange vu que wefrag manipule pas d’images.

  4. Ici et ailleurs » Ruby on Rails : Ruby et sa syntaxe part1 dit :

    [...] Ruby on Rails : Mise en route [...]

  5. KaZoO dit :

    Salut Sky, et merci d’avoir repris le flambeau !

    Ravi de voir que mon ébauche de tuto a pu te servir, et surtout de voir que la scène Rails française commence enfin à s’agrandir :)

    Bravo pour la mise en page du tuto, très claire avec les encadrés de couleur. Et j’aime beaucoup le design épuré de ta todo-list.

    Sinon j’ai quelques questions pour toi :
    - Tu es de quelle formation ?
    - Comment as-tu connu Rails, et as tu pratiqué un autre langage avant ?
    - Est-ce que tu fais du TDD, ou mieux du BDD ? Parce que depuis mon tuto je n’ai finalement pas eu vraiment l’occasion de le pratiquer, et quelques précisions sur le “pourquoi écrire des tests (ou specs ou stories) et comment” m’intéresseraient beaucoup.

    Courage pour la suite :)

  6. Sky dit :

    Alors, je réponds toujours trop tard mais soit !

    - Donc je suis dans une école d’informatique dont je taierai le nom. Actuellement en 4ème année,
    - Rails, c’est parce que je suis assez curieux, je ne veux pas faire de Web professionnellement plus tard, mais c’est tellement simple et rapide à faire que ça reste un bon moyen d’apprendre. J’ai touché à pas mal de langages, PHP, HTML, CSS, Java, C#, C++ et j’essaie d’être polyvalent,
    - Non, pas de TDD, même si ça m’intéresse, j’ai l’impression d’avoir de vraie lacunes, je comprends pas vraiment le truc et faudrait vraiment que je me penche dessus. Du coup, pas de BDD non plus.

    Après, je suis pas fermé et ça peut être intéressant.

Laisser un commentaire

Si vous avez un compte sur WeFrag, connectez-vous pour publier un commentaire.

Vous pouvez, entre autres, utiliser les tags XHTML suivant :
<a href="" title="">...</a>,<b>...</b>,<blockquote cite="">...</blockquote>,<code>...</code>,<i>...</i>