Les liens de la semaine – Édition #112

Développement

.NET

Web

Technologie

Science et autres

Expérimentations avec Ruby : Projet web MVC avec Sinatra

Un certain soir, j’étais en recherche d’idées pour un article de blogue. Ce que j’avais en tête, c’est de trouver quelque chose de nouveau à expérimenter et à apprendre.

L’idée qui m’est venue à ce moment-là, c’est de tenter quelque chose avec Ruby. Ce langage de programmation est très populaire grâce à la venue du framework de développement web Rails. Toutefois, dans mon cas, je ne voulais pas me lancer dans la mise en place d’un projet Rails. Le projet était trop ambitieux pour ce que j’avais d’ambition à donner ce soir-là.

Hello Sinatra!

Mes recherches m’ont mené directement à Sinatra. Un tout petit framework MVC permettant le développement d’applications web et cela très rapidement grâce à un langage dédié (DSL, pour les anglophiles) spécifiquement pour ses besoins.

D’ailleurs, cela est l’un des principaux avantages de Ruby. La possibilité de créer des langages dédiés grâce à la souplesse syntaxique qu’il permet.

La documentation de Sinatra le mentionne très clairement. Il suffit de très peu pour avoir un projet minimalement fonctionnel. La mise en œuvre d’un projet avec Sinatra nécessite vraiment deux lignes de codes. Seulement si vous avez installé Ruby, au préalable.

Les principaux arguments de vente derrière Sinatra sont les suivants :

  • Simplicité et facilité d’utilisation
  • Résultats instantanés
  • Alternative rapide à Rails

Du côté de la facilité d’utilisation, la configuration de Sinatra se résume à :

gem install sinatra

Au minimum, votre fichier Ruby devra contenir le code suivant pour fonctionner avec Sinatra :


require 'sinatra'
get '/' do
'FrenchCoding'
end

view raw

Sinatra.rb

hosted with ❤ by GitHub

De plus, pour l’exécuter vous n’aurez qu’à taper

ruby -rubygems frenchcoding.rb

Le résultat est celui que vous vous attendez. Vous aurez, affiché dans la fenêtre de votre navigateur, la chaîne « FrenchCoding ». Génial, non?

Utilisation

Il s’avère que Sinatra offre un peu plus que ce qui a été précédemment illustré. Directement tiré de la boîte, vous avez accès à un engin de routage complet qui permet de contrôler chaque méthode HTTP à partir de vos contrôleurs et la possibilité d’utiliser l’engin de vues de votre choix.

Mon projet a été basé sur cette idée. Créer un petit service web permettant de recevoir une image encodée en une chaîne base64, l’enregistrer sur le disque et la retourner au demandeur. Simple? Jugez-en par vous-même.


require 'sinatra'
require 'base64'
require 'haml'
require 'securerandom'
set :static, true
set :public_folder, '/uploads'
get '/' do
haml :index
end
get '/uploads/:file' do |f|
send_file 'uploads/' + f
end
post '/image' do
hostUrl = 'http://' + request.host_with_port()
filePath = 'uploads/' + params['imageName']+SecureRandom.uuid.gsub('-','') + ".png"
File.open(filePath, "wb") do |f|
f.write(Base64.decode64(params['imageData']))
end
return 'http://' + request.host_with_port() + '/' + filePath
end

view raw

PostImage.rb

hosted with ❤ by GitHub

Au total, c’est 24 lignes bien espacées de code assez léger. Voilà comment il se décompose :

get / : Retourne la page d’accueil du service. En toute honnêteté, j’en avais pas besoin mais je voulais voir comment fonctionnait Haml. D’ailleurs, vous pouvez consulter le contenu de cette vue ici.

get ‘/uploads/:file’ : Retourne un fichier par le nom qui lui est demandé en paramètre. Vous l’invoquez de cette façon : http://localhost/uploads/fichier.jpg.

post ‘/image’ : Tout ce qui est décrit, plus haut dans ce paragraphe, se passe dans cette action.

Mot final

Parfois, il n’est pas nécessaire d’aller à la chasse à l’ours avec un arsenal nucléaire. La force de Ruby est de pouvoir faire de petites choses simples avec très peu.

Alors, lorsqu’il est temps de pouvoir mettre en place un petit projet jetable. Ruby s’impose, pour moi, comme un outil de prédilection. D’ailleurs, pour ce petit bout de code, j’ai passé plus de temps à figurer comment enregistrer un fichier que de mettre en place Sinatra.

C’est peu dire!

Installation de Ruby sur Windows

Le système d’exploitation Windows domine avec près de 70% des parts d’utilisation dans le monde, à l’heure d’écrire cet article. Cette domination fait en sorte que, d’une façon ou d’une autre, en accord ou pas, vous aurez à utiliser dans votre quotidien.

L’écosystème de développement qui va de soi est .NET. Il n’est pas un hasard que .NET soit produit par Microsoft même. Il s’agit de la raison même de l’expression For Us By Us.

Il serait tout de même naïf de croire qu’il y a seulement avec .NET qu’un programmeur peut s’exercer. Si ce n’est pas à travers Cygwin ou même avec un environnement natif, il y a de très bonnes raisons de croire que votre langage open-source préféré soit adapté pour être utilisé sous Windows.

Ruby

Ruby est un langage de programmation orienté objet et dynamique. Le langage en soi a été inventé en 1995 par Yukihiro Matsumoto.

Ce que j’aime, en particulier, avec Ruby est le peu de friction qui a entre les fonctionnalités offertes par le langage lui-même et la structure du langage. Certains sont même allés jusqu’à le comparer au vénérable VB6.

Par exemple, les lignes suivantes :


array_elements = ['table', 'chair', 'floor']
array_elements.each do | element |
puts "#{element} est dans la liste!"
end

view raw

gistfile1.rb

hosted with ❤ by GitHub

Vont donner le résultat suivant :

table est dans la liste!
chair est dans la liste!
floor est dans la liste!

RubyGems

RubyGems est le gestionnaire des librairies tierces associées à Ruby. Il permet la gestion et la configuration des librairie que vous désirez utiliser. Dans le cas où vous venez du monde de .NET, sachez que le concept est très similaire à NuGet.

Sa syntaxe est assez linéaire. Dans la majorité des cas, vous voudrez simplement l’invoquer de la façon suivante : gem install votre_librairie.

Par exemple, pour installer la librairie Sinatra, vous l’appelez de cette façon : gem install sinatra. Le tour est joué!

Ruby On Windows

La meilleure façon de configurer Ruby sur son système Windows est par l’entremise de Ruby On Windows. Il s’agit d’un installateur sous le format d’un MSI permettant la configuration de Ruby ainsi que ses fonctionnalités satellite.

L’installation de RoW est assez simple. Il suffit de télécharger et installer  la plus récente version à l’adresse http://rubyinstaller.org/downloads/.

À l’heure actuelle, la version la plus récente de Ruby est 1.9.3-p327. Prenez note que cette RoW est mise à jour assez fréquemment.

La procédure détaillée pour l’installation se résumé à cliquer sur suivant quelques fois et attendre un peu. Cela est aussi simple qu’il est entendu.

S’amuser avec Ruby

Une fois le tout installé, vous aurez les éléments suivants dans votre menu démarrer :

Les points d’intérêts principaux sont :

  • Interactive Ruby (irb) : Permet de tester votre code en temps réel. Vous pouvez littéralement copier/coller votre code là-dedans et voir les résultats à mesure que le code est interprété.
  • RubyGems Documentation Server : Interface web centralisant la documentation des gems que vous avez d’installé sur votre ordinateur.

Pour le reste, il vous faut un éditeur texte et un peu de volonté pour apprendre un nouveau langage de programmation. Un fichier ruby s’exécute de la façon suivante : ruby fichier.rb.

Happy hacking!