Lancement de Ruby on Rails 3.1 en Release Candidate
Durant la RailsConf 2011, Asset Pipeline et HTTP Streaming en action

Les rubriques (actu, forums, tutos) de Développez
Tags
Réseaux sociaux


 Discussion forum

Retrouvez le dossier complet de la rédaction
Le , par Idelways, Expert Confirmé Sénior
Mise à jour du 1 septembre 2011

La branche 3.x du framework Ruby on Rails vient d'avoir une mise à jour majeure, centrée sur l'amélioration globale des performances et une meilleure écriture et organisation du code au sein des applications Web.

Les nouveautés les plus notables de ce cadre logiciel de développement Web ont été passées en revue sur l'annonce de la Release Candidate (lire ci-devant), mais en voici le rappel des plus importantes.

Côté architectural, Rails3.1 est essentiellement marqué par l'introduction du Assets Pipeline.

Ce middleware d'ActionPack hisse le JavaScript et CSS au même rang que le code Ruby côté serveur, en plaçant ces fichiers au coeur de l'application où ils peuvent être codés avec des alternatives jugées plus évoluées : CoffeeScript et SCSS, les nouvelles dépendances du framework.

Grâce à Sprockets 2.0 et Uglifier, les applications délivrent un seul fichier de script et un seul fichier CSS compressés, minifiés et obfusqués, dont le téléchargement peut débuter avant même la fin de la génération de la page dynamique, grâce au support de l'HTTP Streaming.

jQuery est naturellement le nouveau framework par défaut. Il n'est toutefois plus inclus par défaut, mais récupéré dans sa dernière version grâce à une librairie (ruby gem) indépendante.

Depuis l'annonce de la Release Candidate, l'équipe du framework, à qui ça arrive de suivre les tendances en plus de vouloir en créer, décide que le JSON en plein essor sera désormais le format alternatif pour toutes les requêtes (sur les scaffolds notamment), en remplacement du XML en perte de vitesse.

Ruby on Rails est utilisé notamment par Diaspora*, le réseau social libre.

Pour installer Rails 3.1 via Ruby Gems et RVM :

Code :
1
2
3
4
 
rvm @rails31_project_name --create --rvmrc 
gem install rails 
rails new project_name

Pour la liste complète des nouveautés, consulter les Release Notes

Source : Blog officiel

Et vous ?

Maintenant que cette version est sortie en version finale, avez-vous passé, ou envisagez-vous d'y passer vos applications en production ?
Que pensez-vous de ces nouveautés et de la direction dans laquelle s'engage le framework ?

Lancement de Rails 3.1 en Release Candidate
Durant la RailsConf 2011, Asset Pipeline et HTTP Streaming en action

Mise à jour du 23/05/2011 par Idelways

La version 3.1 de Ruby on Rails est disponible en Release Candidate, une mouture riche en nouveautés, présentées en détail par plusieurs intervenants lors de la conférence annuelle RailsConf dédiée au framework, organisée cette année à Baltimore du 16 au 19 mai.

Cette version élève notamment la partie « front-end » JavaScript et CSS des applications (jusque-là cantonné au dossier public) au même rang que le code Ruby des contrôleurs, vues, modèles et assistants en plaçant ces sources dans le sous-dossier Assets du répertoire « app ».

Le nouveau module Asset Pipeline (propulsé par la bibliothèque Sprockets 2.0) prône une meilleure organisation et répartition des sources JavaScript et CSS, tout en délivrant au navigateur un fichier unique permettant d’économiser le nombre de requêtes serveur et le temps de latence qui en résulte.

Uglifier, une autre dépendance par défaut du Framework permet de compresser, minifier et obfusquer ce fichier en production.

Sprockets fonctionne aussi bien en JavaScript/CSS traditionnels qu'en CoffeeScript/SCSS, introduits dans cette version comme la « nouvelle mode » de coder en JavaScript et CSS par les développeurs Rails (pour plus de détails, lire ci-devant)

Une surcouche eRB peut être rajoutée. Il est donc tout à fait possible de créer un fichier clients.css.scss.erb, permettant d'exécuter du code Ruby dynamique dans un fichier SCSS qui sera à son tour converti en CSS et combiné aux autres fichiers avant d’être mis en cache. Le tout d'une manière transparente pour le développeur.



Il reste toutefois possible de combiner au sein d'une même application des fichiers JavaScript et CoffeeScript. Il est donc inutile par exemple de convertir jQuery (par ailleurs framework JS par défaut de Rails depuis cette version) en CoffeeScript.

L'autre nouveauté phare de Rails 3.1 est l'arrivée du Streaming HTTP, une fonctionnalité destinée à accélérer le chargement des pages en délivrant progressivement le contenu d'une réponse HTTP au fur et à mesure que son contenu dynamique est généré.
Cette fonctionnalité peut être activée par contrôleur et limitée à une ou plusieurs actions.

Son activation implique toutefois l'inversement de l'ordre d'évaluation des templates. Le Layout des pages est exécuté en premier pour permettre au navigateur de commencer dès que possible le chargement des dépendances statiques appelés habituellement dans le head.
Par conséquent, les contenus ajoutés au Layout à partir des vues via des appels à Content_for ne sont pas évalués à temps.
Pour y pallier, « Provide », une méthode alternative à content_for au fonctionnement identique, permet de forcer l'exécution des vues jusqu'au dernier appel à Provide, avant de passer à l'évaluation du Layout.

De nombreuses autres améliorations font leur apparition dans toutes les parties du framework, parmi elles :

Du côté d'ActiveRecord, has_secure_password permet de hacher ses mots de passe (avec grain de sel) très facilement avec l'algorithme robuste et antiforcebrute BCrypt.
Ruby on Rails 3.1 introduit par ailleurs Identity Map, une nouveauté encore instable, qui réutilise le même objet alloué en mémoire à la création d'un enregistrement, lorsque le même enregistrement est sollicité ailleurs dans le code, économisant mémoire et requêtes SQL.

Les migrations intelligentes réversibles (sans la partie Down) font aussi leur apparition, en compagnie d'une gestion plus optimisée (collective) des modifications sur le schéma des tables et l'ajout par défaut d'index aux clés étrangères simples ou polymorphiques.

Plus de détails sur cette version sur la Keynote de David Heinemeier Hansson durant la Rails Conf 2011.

[ame="http://www.youtube.com/watch?v=cGdCI2HhfAU"]RaisConf 2011[/ame]

Rails 3.1 RC peut être installée via RubyGems avec la commande : gem install rails --pre.

La liste complète et très détaillée des nouveautés de cette version est maintenue par Ryan Bates (de Railscasts) sur cette page

Source : site officiel de Rails

Et vous ?

Que pensez-vous des nouveautés de cette version ?

Ruby on Rails 3.1 adopte jQuery, SaSS et le compilateur JavaScript CoffeeScript
Comme dépendance par défaut, le streaming HTTP arrive sur le framework

Après quelques mois d'accalmie depuis la sortie de la version 3.0 du framework de développement Web Ruby on Rails, la fièvre des nouvelles versions (et des polémiques) regagne la communauté à la suite de l'annonce de nouveaux détails sur la prochaine version et l’intégration par défaut de nouvelles dépendances.

Si l'adoption du framework jQuery en remplacement du couple Prototype/Script.aculo.us fait (presque) l'unanimité parmi les développeurs qui suivent l'évolution du Framework, on ne peut en dire autant de la décision d'intégrer par défaut le compilateur JavaScript CoffeeScript et à un degré moindre l'adoption du compilateur CSS SaSS.

CoffeeScript, dévoilé en début 2010, se positionne comme une nouvelle syntaxe pour JavaScript, destinée à ressortir les qualités du langage en cachant au développeur ses défauts avec une syntaxe plus épurée et plus logique, proche de celle de Ruby.

Au départ, CoffeeScript était écrit en Ruby et disponible uniquement en tant que bibliothèque du langage (ruby gem), mais depuis, ce compilateur, de plus en plus populaire, a gagné en maturité, a été réécrit en Node.js et porté sur un grand nombre de plates-formes de développement.

SaSS est pour CSS ce qu'est CoffeeScript pour JavaScript et sera lui aussi une dépendance par défaut de Rails 3.1.
Ce compilateur n'altère toutefois pas pour beaucoup la logique du langage de mise en forme et se contente de lui ajouter les fonctionnalités jugées manquantes, pour faciliter l'intégration et la maintenance des feuilles de style.

Il introduit entre autres, les variables, les mixins, l'imbrication et l'héritage entre sélecteurs et même des options avancées comme les conditions, boucles et importation de fichiers externes.

Depuis la sortie de la version 3.0 de Sass, sa nouvelle syntaxe par défaut SCSS (pour « Sassy CSS ») se rapproche de celle de CSS3 en rétablissant notamment les accolades et les points-virgules à la fin des règles CSS.
Un fichier CSS 3 classique est donc tout à fait compatible avec SCSS, ce qui rend l’adoption de cette technologie beaucoup plus naturelle.
SaSS a aussi été porté sur d'autres langages.

Ruby on Rails 3.1 intègrera par ailleurs le support du Streaming HTTP, une nouveauté initialement annoncée en marge de la sortie de la bêta de Rails 3.0.

Cette fonctionnalité, destinée à améliorer la vitesse de chargement des pages permet au navigateur de charger les dépendances statiques de la page (JavaScript, CSS, images...) avant même que la requête ne soit entièrement traitée par le serveur et le contenu dynamique de la réponse généré.

La taille de la réponse aux requêtes n'est donc pas fixée et envoyée au navigateur dans l'entête (Header HTTP) et les différents morceaux de la requête (avec leur taille) sont ajoutés au fur et à mesure de leur génération.
Ces morceaux sont donc intégrés par le serveur à la réponse dès qu'ils sont prêts, permettant à l'ensemble de la page de se charger plus rapidement, réduisant ainsi le temps de latence.

Cette fonctionnalité repose sur le mécanisme « Chunked transfer encoding » supporté par la version 1.1 du protocole HTTP.

Par ailleurs, tous les mécanismes d’ActionView en relation avec RJS (Ruby to JavaScript) ont été retiré de la version 3.1 et placés dans un gem appelé prototype-rails.

La date de sortie de la version 3.1 définitive n'est pas encore connue, mais il est possible de la tester dès maintenant en l'installant à partir de GitHub.

Code :
1
2
3
mkdir ~/rails-3.1/ ; cd ~/rails-3.1/  
git clone git://github.com/rails/rails.git 
~/rails-3.1/rails/bin/rails new application_de_test --edge
Source : le blog du framework, GitHub

Et vous ?

Que pensez-vous des nouveautés de cette version ?
L'avez-vous essayé ? Qu'en pensez-vous ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de dourouc05 dourouc05
http://www.developpez.com
Responsable Qt
le 22/04/2011 11:53
Quid du module Engines, qui empêche des projets comme Redmine ou ChiliProject à migrer sur RoR 3.x ?
Avatar de kedare kedare
http://www.developpez.com
Membre extrêmement actif
le 22/04/2011 12:01
jQuery, YES, enfin !
Avatar de Idelways Idelways
http://www.developpez.com
Expert Confirmé Sénior
le 22/04/2011 12:18
Bonjour dourouc05,

Le module Engines a été complètement réécrit pour Rails 3.0 mais à la sortie de cette version, le module n'a pas pu être complété par manque de temps, mais il est (partiellement) disponible sur Rails 3.0 qui pousse même à l'extrême le principe des Engines, vu que toute application Rails 3.0 est en effet un Engine.

Rails 3.1 complétera le module avec migrations, assets et tout ce qu'il faut pour que les plugins de Redmine (qui sont en fait des Engines) peuvent fonctionner sur la branche 3.x

Cordialement
Idelways.
Avatar de herr_wann herr_wann
http://www.developpez.com
Membre du Club
le 22/04/2011 12:46
Je ne vois pas trop l'intérêt de CoffeeScript mais je n'ai pas encore creusé le sujet. Ce qui me gène avec Rails, c'est que DHH y ajoute ce qui l'intéresse (enfin sa boite) alors que d'autres doivent se contenter d'un gem ex. i18n
Avatar de Idelways Idelways
http://www.developpez.com
Expert Confirmé Sénior
le 22/04/2011 16:26
Bonjour herr_wann,

Rails est connu, depuis sa sortie d'être un "framework à opinion" qui veut démocratiser (et promouvoir) certaines bonnes pratiques que ses concepteurs jugent intéressantes.

En 2005 c'était Ajax, DRY, MVC pour le web ou encore Conventions plutôt que configurations, largement repris maintenant par d'autres technos.

Cette année c'est CoffeeScript et SaSS, qui sait ? Peut être que CoffeeScript remplacera JavaScript un jour où que certaines nouveautés de SaSS seront intégrés à une prochaines révision de CSS.

Cordialement à tous.
Avatar de Idelways Idelways
http://www.developpez.com
Expert Confirmé Sénior
le 23/05/2011 13:59
Lancement de Rails 3.1 en Release Candidate
Durant la RailsConf 2011, Asset Pipeline et HTTP Streaming en action

Mise à jour du 23/05/2011 par Idelways

La version 3.1 de Ruby on Rails est disponible en Release Candidate, une mouture riche en nouveautés, présentées en détail par plusieurs intervenants lors de la conférence annuelle RailsConf dédiée au framework, organisée cette année à Baltimore du 16 au 19 mai.

Cette version élève notamment la partie « front-end » JavaScript et CSS des applications (jusque-là cantonné au dossier public) au même rang que le code Ruby des contrôleurs, vues, modèles et assistants en plaçant ces sources dans le sous-dossier Assets du répertoire « app ».

Le nouveau module Asset Pipeline (propulsé par la bibliothèque Sprockets 2.0) prône une meilleure organisation et répartition des sources JavaScript et CSS, tout en délivrant au navigateur un fichier unique permettant d’économiser le nombre de requêtes serveur et le temps de latence qui en résulte.

Uglifier, une autre dépendance par défaut du Framework permet de compresser, minifier et obfusquer ce fichier en production.

Sprockets fonctionne aussi bien en JavaScript/CSS traditionnels qu'en CoffeeScript/SCSS, introduits dans cette version comme la « nouvelle mode » de coder en JavaScript et CSS par les développeurs Rails (pour plus de détails, lire ci-devant)

Une surcouche eRB peut être rajoutée. Il est donc tout à fait possible de créer un fichier clients.css.scss.erb, permettant d'exécuter du code Ruby dynamique dans un fichier SCSS qui sera à son tour converti en CSS et combiné aux autres fichiers avant d’être mis en cache. Le tout d'une manière transparente pour le développeur.



Il reste toutefois possible de combiner au sein d'une même application des fichiers JavaScript et CoffeeScript. Il est donc inutile par exemple de convertir jQuery (par ailleurs framework JS par défaut de Rails depuis cette version) en CoffeeScript.

L'autre nouveauté phare de Rails 3.1 est l'arrivée du Streaming HTTP, une fonctionnalité destinée à accélérer le chargement des pages en délivrant progressivement le contenu d'une réponse HTTP au fur et à mesure que son contenu dynamique est généré.
Cette fonctionnalité peut être activée par contrôleur et limitée à une ou plusieurs actions.

Son activation implique toutefois l'inversement de l'ordre d'évaluation des templates. Le Layout des pages est exécuté en premier pour permettre au navigateur de commencer dès que possible le chargement des dépendances statiques appelés habituellement dans le head.
Par conséquent, les contenus ajoutés au Layout à partir des vues via des appels à Content_for ne sont pas évalués à temps.
Pour y pallier, « Provide », une méthode alternative à content_for au fonctionnement identique, permet de forcer l'exécution des vues jusqu'au dernier appel à Provide, avant de passer à l'évaluation du Layout.

De nombreuses autres améliorations font leur apparition dans toutes les parties du framework, parmi elles :

Du côté d'ActiveRecord, has_secure_password permet de hacher ses mots de passe (avec grain de sel) très facilement avec l'algorithme robuste et antiforcebrute BCrypt.
Ruby on Rails 3.1 introduit par ailleurs Identity Map, une nouveauté encore instable, qui réutilise le même objet alloué en mémoire à la création d'un enregistrement, lorsque le même enregistrement est sollicité ailleurs dans le code, économisant mémoire et requêtes SQL.

Les migrations intelligentes réversibles (sans la partie Down) font aussi leur apparition, en compagnie d'une gestion plus optimisée (collective) des modifications sur le schéma des tables et l'ajout par défaut d'index aux clés étrangères simples ou polymorphiques.

Plus de détails sur cette version sur la Keynote de David Heinemeier Hansson durant la Rails Conf 2011.



Rails 3.1 RC peut être installée via RubyGems avec la commande : gem install rails --pre.

La liste complète et très détaillée des nouveautés de cette version est maintenue par Ryan Bates (de Railscasts) sur cette page

Source : site officiel de Rails

Et vous ?

Que pensez-vous des nouveautés de cette version ?
Avatar de Idelways Idelways
http://www.developpez.com
Expert Confirmé Sénior
le 01/09/2011 20:57
Ruby on Rails 3.1 fin prête pour la production
Une version centrée sur les performances des applications Web et l'organisation du code

Mise à jour du 1 septembre 2011

La branche 3.x du framework Ruby on Rails vient d'avoir une mise à jour majeure, centrée sur l'amélioration globale des performances et une meilleure écriture et organisation du code au sein des applications Web.

Les nouveautés les plus notables de ce cadre logiciel de développement Web ont été passées en revue sur l'annonce de la Release Candidate (lire ci-devant), mais en voici le rappel des plus importantes.

Côté architectural, Rails3.1 est essentiellement marqué par l'introduction du Assets Pipeline.

Ce middleware d'ActionPack hisse le JavaScript et CSS au même rang que le code Ruby côté serveur, en plaçant ces fichiers au coeur de l'application où ils peuvent être codés avec des alternatives jugées plus évoluées : CoffeeScript et SCSS, les nouvelles dépendances du framework.

Grâce à Sprockets 2.0 et Uglifier, les applications délivrent un seul fichier de script et un seul fichier CSS compressés, minifiés et obfusqués, dont le téléchargement peut débuter avant même la fin de la génération de la page dynamique, grâce au support de l'HTTP Streaming.

jQuery est naturellement le nouveau framework par défaut. Il n'est toutefois plus inclus par défaut, mais récupéré dans sa dernière version grâce à une librairie (ruby gem) indépendante.

Depuis l'annonce de la Release Candidate, l'équipe du framework, à qui ça arrive de suivre les tendances, en plus de vouloir en créer ! Décide que le JSON en plein essor soit désormais le format alternatif pour toutes les requêtes (sur les scaffolds notamment), en remplacement du XML en perte de vitesse.

Ruby on Rails est utilisé notamment par Diaspora*, le réseau social libre.

Pour installer Rails 3.1 via Ruby Gems et RVM :

Code :
1
2
3
4
 
rvm @rails31_project_name --create --rvmrc 
gem install rails 
rails new project_name

Pour la liste complète des nouveautés, consulter les Release Notes

Source : Blog officiel

Et vous ?

Maintenant que cette version est sortie en version finale ? Avez-vous passé, ou envisagez-vous d'y passer vos applications en production ?
Que pensez-vous de ces nouveautés et dans la direction dans laquelle s'engage le framework ?
Avatar de herr_wann herr_wann
http://www.developpez.com
Membre du Club
le 02/09/2011 10:19
A noter que le gem therubyracer est toujours nécessaire pour les linuxiens qui n'auraient pas de moteur javascript installé sur leur machine (node.js par exemple)

gem 'therubyracer', '>= 0.8.2'
Offres d'emploi IT
Ingénieur qa technico-fonctionnel
CDI
Mobiskill - Ile de France - Paris (75000)
Parue le 23/10/2014
DevOps
CDI
Mobiskill - Ile de France - Paris (75004)
Parue le 29/10/2014
Développement C++
Stage
Adjustem - Picardie - Amiens (80000)
Parue le 20/10/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula