Votre application Scala, Play 2 et MongoDB en six étapes

Après avoir lu un certain nombre de tutoriaux sur ScalaPlay et MongoDB (ici, ici, ici, ici…) et regardé pas mal de projets sur github, je me suis rendu compte qu’ils étaient tous vieux et ne correspondaient plus aux versions actuelles. Voici donc, encore un autre tutoriel sur ces technologies mais avec des versions actualisées. Nous voici donc partis avec :

  • Scala 2.10.2
  • Play 2.2.1
  • MongoDB 2.4.8
  • Salat 1.4.0

Le but de cet article va être de construire une application simple. Si vous ne n’avez pas déjà tout installé, c’est le moment de le faire : install MongoDB, install Play, install Scala.

Première étape : Créer notre application Play

create_play_app

Pour démarrer notre application, il suffit alors d’aller dans le dossier de l’application et de lancer le serveur :  cd playScalaMongoSample/ puis  play pour accéder à la console sbt et enfin de lancer le serveur avec la commande  run .

play_run

Bravo ! Votre application fonctionne !!! Maintenant, rendez-vous sur votre application : http://localhost:9000/. Vous devriez voir la page d’accueil de Play :

play_hello_page

Deuxième étape : Ajouter la dépendance sur MongoDB

Créez un fichier Build.scala  dans le dossier project/ et ajoutez-y les dépendances de salat :

Créez ensuite le fichier play.plugins  dans le dossier conf/  et déclarez le plugin salat :

Dans le fichier conf/application.conf , ajoutez les lignes suivantes :

Le paramètre mongodb.default.db  détermine le nom de la base qui sera utilisée dans MongoDB.

Troisième étape : Ajoutez les routes de l’application

Pour cela on va mettre un place un simple CRUD (Create Read Update Delete) basé sur MongoDB.

Pour cela commençons par créer les différentes routes qui seront utilisées. Ajoutez les lignes suivantes au fichier conf/routes  :

Quatrième étape : Créez vos modèles

Pour fonctionner et se connecter à la base de données, salat à besoin d’un contexte que nous allons créer dans le dossier  app/models/  :

On peut maintenant créer notre classe User qui sera manipulée par notre CRUD. Pour que salat puisse bien mapper notre classe, il faut impérativement que ce soit une case class. Voici notre User :

Cinquième étape : Codez le contrôleur

On peut maintenant commencer à coder le contrôleur CRUDApp qui va effectuer l’ensemble des actions prévues :

Sixième étape : Ajoutez l’interface

Maintenant que la logique est terminée, il faut tout simplement ajouter l’interface graphique. Pour cela, il nous faudra simplement créer  CRUD.scala.html  dans le dossier app/views/  :

Votre application est maintenant prête !!!

Pour la tester, commencez par démarrer MongoDB sur votre machine, puis, à partir du répertoire principal de l’application lancez la commande  play  puis run et rendez-vous à l’adresse http://localhost:9000/users.

Normalement vous devriez avoir un écran comme celui-ci :

play_crud

 

Vous pouvez alors créer et supprimer des utilisateurs \o/

Si vous avez oublié de démarrer votre base MongoDB, vous aurez une erreur comme celle-ci :

play_no_db

Dans ce cas, il faut arrêter l’application, démarrer MongoDB et démarrer à nouveau votre application.

Voilà ! J’espère que cette petite mise en bouche vous aura fait partir du bon pied 🙂

Pour les « flemmards », vous pouvez directement télécharger l’archive du projet.

Pour ceux qui veulent partir directement d’une application intégrant les composants de base, j’ai créé un projet de démarrage librement accessible sur github : https://github.com/loicknuchel/play-starter

What’s next

Pour ceux qui veullent aller un peu plus loin, je conseille le workshop buyme de Scala.io : https://github.com/workshop-buyme/buyme/wiki

Une réponse à “Votre application Scala, Play 2 et MongoDB en six étapes

  1. […] de mon précédent article sur Scala, Play framework et MongoDB je vous montrais comment utiliser salat pour se connecter à […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">