Sinatra, another Song ...

édité Le 21/05/2010 à 20:35 par Trinoo

Sinatra, Framework Ruby

Il est amusant de voir des noms d'artistes célèbres sur des frameworks : " Frank Sinatra, Django Reinhardt, Thelonious Monk, ...".

Sinatra fait partie de ces frameworks "light", destiné spécialement pour l'écriture rapide d'un service ou d'application "simple" (c'est toujours relatif).

Il s'identifie comme un DSL (domain-specific language) : un langages dédiés.
Alors que la structure MVC de Rails est séparée entre différents répertoires et fichiers. Sinatra semble tout mettre dans un unique fichier (pas tout, et ce n'est pas une obligation)

Pour vous mettre l'eau à la bouche, voici comment se présente un "hello world" sous Sinatra.

# fichier myapp.rb
  require 'rubygems'
  require 'sinatra'
  get '/' do
    'Hello world!'
  end
et là, il faut lancer le serveur pour voir le résultat, ca se passe sous localhost:4567
sudo gem install sinatra #installation de Sinatra
  ruby myapp.rb  #lancer l'application

Il semble que pour une mise en production, Rack semble être le Serveur Web idéal.

Passons à quelque chose de plus (relativement) complexe.

get '/:page' do
  @page = Page.find(params[:page])
  haml :show
end

__END__
@@ layout
%html
  %body
    %content=yield
@@ show
%h1= title
  #page_content= @page.to_htm

Ici, le contrôleur et la vue se trouvent dans le même fichier et cette dernière utilise le "moteur" de template : HAML.

Pour ceux qui sont familiers avec le Restful et les différentes méthodes de requête HTML, voici un exemple qui n'a pas besoin de commentaires

get '/' do
    .. show something ..
  end

  post '/' do
    .. create something ..
  end

  put '/' do
    .. update something ..
  end

  delete '/' do
    .. annihilate something ..
  end

Je trouve que ce framework est idéalement conçu pour l'implémentation d'un WebService ou d'une API. bien qu'il utilise la structure MVC, il faut raisonner dans une philosophie différente de Rails avec une vue globale de l'ensemble (pas facile).

Vous serez étonné de découvrir les appllications en ligne qui tournent sous Sinatra. Bonne découverte.

Fly me to the Moon ...

Source:

http://www.sinatrarb.com/
http://www.slideshare.net/adamwiggins/lightweight-webservices-with-sinatra-and-restclient-presentation
http://www.rubyinside.com/sinatra-29-links-and-resources-for-a-quicker-easier-way-to-build-webapps-1371.html