La force de Rails 3.1 est d'arriver à fédérer les meilleurs produits tout en restant dans son rôle de cadriciel.
Les éléments forts sont:
a) Utilisation de node.js pour proposer le facilitateur de javascript coffeescript. On peut imaginer les montages a faire entre rails et node.js
b) Jquery est mis en avant. C'est tout le javascript et le css (avec le générateur Sass ) qui vont bénéficier d'un nouveau traitement par le biais des assets. Il suffit d'ajouter son script dans un répertoire dédié pour qu'il soit ajouté et compressé avec jquery.
c) Le middleware : le lien entre la requête http et le langage est réalisé par le système Rack. Ruby est à ce jour le seul langage à proposer une boite à outil de ce type.
arborescence d'un projet Rails
Sur cette copie d'écran, on notera l'apparition du répertoire assets qui contient trois dossiers: un pour le javascript , un pour le css et un pour les images. Les trois fonctionnent de manière identique et dans le même but: concaténer les fichiers en un seul pour réduire le nombre de connexion réseau nécessaires à l'obtention d'une page complète.
Utilisation du javascript.
Tout commence par la création d'une application Rails par la commande éponyme:
rails mon_projet .
La commande rails s'est étoffée :
La première page est activée en générant un controleur (ex: rails g controller commun index ) .
Tout fonctionne :
Et là, la magie commence, deux lignes de javascript déposé dans le répertoire assets et aussitôt Rails vous sert jquery.
Si on ne veut qu'une seule requete pour récupérer le javascript dans l'environnement de développement, une petite modification des fichiers de configuration s'impose.
Ces lignes dans le fichier environments/development.rb
précisent de :
config.assets.compress = true # compresser tout le contenu d'assets
config.action_controller.perform_caching = tr # Utiliser un cache serveur
config.assets.js_compressor = :uglifier # Utiliser uglifier comme minificateur de javascript
# Expands the lines which load the assets
config.assets.debug = false # enlever le mode debug
A la premiere requete :
Rails va compiler les programmes coffeescript s'ils existent. Il va ensuite assembler les fichiers javascript, les concaténer et les mettre en cache (nettoyage du cache : rake tmp:clear).
La version 3.0 était déjà une révolution: c'était la fusion de deux projets opensources majeurs (Rails et merb) , alors que le fork est le mode de vie normal d'un projet. La version 3.1 fait encore plus fort et réalise la synthèse de deux idées puissantes : les frameworks légers et agiles pour le web et la reconnaissance du javascript (coté client et serveur).