Série Google AppEngine : Sinatra On AppEngine

Posted By: Hassane Moustapha On lundi 20 septembre 2010


Hi guys !

Dans ce gtug, nous essayons tous de partager nos connaissances et expériences. 
Chose que j’essaie de faire ! Et je veux parler de Google AppEngine et de sinatra pour aider les "intéressés" à écrire des applications  web (sites et services) et les héberger sur AppEngine.

Je commence cette série par une présentation de ce que nous aurons à utiliser :
         --> Sinatra
           --> Rack
           --> DataMapper
           --> DataStore

Let's start !

         Sinatra n'est pas un framework mais une bibliothèque qui vous permet de construire pratiquement n'importe quel type d'applications basées sur le Web d'une manière très simple et super sexy aussi. Lorsque vous codez en Sinatra vous n'êtes lié que par HTTP et votre connaissance du langage Ruby.

            Les applications Sinatra sont généralement écrites dans un fichier unique. Elles démarrent et s'arrêtent presque instantanément et n'utilisent pas beaucoup de mémoire et servent les demandes (requêtes) de façon très rapide. Mais, elles offrent aussi presque toutes les fonctionnalités principales que vous attendez d'un  framework web complet : les ressources RESTful, les templates (ERB, haml / Sass, et Builder), les types MIME, fichiers transmis en continu, etags, le développement en mode de production, gestion des exceptions.

         Sinatra est compatible avec tous les frameworks de TEST écrits en Ruby et est aussi multithread (par défaut), mais vous pouvez vous passer de cette "option" pour envelopper certaines de vos actions(traitements) dans un mutex indépendant.

Vous pouvez utiliser Sinatra avec toutes les bases de données en passant par ActiveRecord, DataMapper ou certains autres ORM
Une dernière chose dans cette brève présentation : Sinatra est basée sur Rack et utilise mongrel par défaut.


Installation de Sinatra :

Sur windows :
        c:> gem install sinatra
Sur Linux/Os X :
          sudo gem install sinatra

J'avoue que l'installation est assez compliquée :)

Première application Sinatra

Nous allons écrire une application très simple et que l'on fera évoluer step by step.

require 'sinatra'

get '/' do
    "Hello world:"
end

Enregistrons ce bout de code dans un fichier que nous allons appeler "mon_app.rb" et lançons le comme suit :

       ruby mon_app.rb

Notre application est disponible sur ==> http://localhost:4567.


Blake Mizerany le créateur de Sinatra dit qu'il est préférable d'apprendre (ou d'essayer) Sinatra avant Ruby on Rails:
  
"Lorsque vous découvrez un framework aussi large, vous êtes présenté à une abondance d'idées, de contraintes, et de magie. Pire que tout, on vous impose un modèle. Dans le cas de Rails, c'est le MVC. MVC ne correspond pas à la plupart des applications web au tout début ou pas du tout. " Blake Mizerany


Retour au code ! Essayons de comprendre ce que nous avons écrit :

require 'sinatra' ==> import de la gem (ou bibliothèque)

get '/' do
     "hello wolrd"
end

On avait dit (plus haut) qu'avec Sinatra on n'a affaire qu'au HTTP et aux objets Ruby :
sans entrer dans les détails de ce que c'est une requête HTTP on dira pour chaque type de requête on a un bloc de code à exécuter.
La chaine de caractères "hello world" est renvoyée à tout agent ayant émis une requête HTTP avec le verbe GET et sans paramètre.

J'espère que c'est assez clair :) Sinon vous pourrez jeter un coup d'oeil sur la documentation sur le site officiel de sinatra (http://sinatrarb.com).

Ceux qui ont déjà eu à utiliser des frameworks web se demanderont au début "où mettre telle ou telle autre chose ?"  La réponse est assez simple "Tout type de choses a sa place" : les vues (ou pages web) sont placées dans le répertoire "views" à la racine du projet, les css, js et images dans le répertoire "public".

Un exemple :
  
      Mon_Projet_Sinatra\

       -- views\
                        -- layout.erb
                        -- index.erb
       -- public\
                        js\
                            -- mes_scripts.js
                        css\
                            -- style.css
                        images\
                           -- vos images 

       -- mon_app.rb
       -- Gemfile                                                                                                                        

C'est à peu près à ça que ressemblent les applications sinatra (pas toutes).

C'est la fin de cette première partie! Dans le prochain article, nous allons jeter un coup d'oeil sur les vues (le layout général et les vues spécifiques) et introduire DataMapper et apprendre à l'utiliser dans une application Sinatra.

snipt

Fourni par Blogger.