Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Liens connexes

Dépêche modérée par

Dépêche éditée par

Développeur : Sortie de Ruby on Rails 2.0

Posté par EppO (page perso, ). Modéré le 11 décembre 2007.
Ruby
Ruby on Rails, le célèbre framework basé sur le langage Ruby, permettant le développement rapide d'applications web selon le modèle MVC (Modèle, Vue, Contrôleur) sort en version 2.0.

Le développement qui a duré une année a permis l'ajout de nombreuses fonctionnalités, la résolution de beaucoup de bugs, une orientation tournée vers le REST, et pas mal d'allégements au niveau du core (externalisation de fonctionnalités en greffons).

DHH, le créateur du framework Ruby on Rails, a commenté ces nouveautés lors de Paris on Rails. Pour les absents, des slides et/ou des podcasts des présentations devraient être mis en ligne prochainement.

> Lire la dépêche (154 commentaires, moyenne: 2,1).  

Ressources et webservices
Rails a tranché dans le débat REST - SOAP au profit du REST.
Le module ActionWebservice a été sorti du core et placé en greffon pour ceux qui veulent continuer à utiliser du SOAP. ActiveResource est le nouveau module qui est similaire à ActiveRecord mais avec une approche ressource.
Au passage, l'url des ressources a été modifié, l'utilisation du point virgule ( ; ) pour séparer l'action de la ressource a été remplacé par un slash ( / ), à cause de navigateurs et bibliothèques HTTP qui ne le supportaient pas en tant que séparateur de requêtes.

Multi-vues
Rails 2.0 sépare le format du template (html, xml, atom, rss, ...) du moteur de rendu. Le template show.rhtml devient donc show.html.erb (ERB étant le moteur de rendu par défaut).
D'autres moteurs de rendus existent aussi, builder utilisé pour générer du atom+xml, et HAML principalement utilisé aujourd'hui pour générer des templates adapté à l'iPhone.

Identification des records
On avait l'habitude en version 1.2.X d'utiliser person_url ou person_path pour générer des URLs du record person, il est plus facile avec Rails 2.0 de gérer les redirections ou les liens:

# person est une instance de la classe Person,
# qui sera mappé en person_url
redirect_to(person)
link_to(person.name, person)
form_for(person)

Authentification HTTP
L'authentification basique HTTP est maintenant supportée, ce qui permet facilement de sécuriser efficacement les appels d'APIs

Javascript, CSS et images
Il est plus facile en tant que développeur de séparer ses fichiers javascripts ou CSS en plusieurs parties logiques que de maintenir un seul gros fichier. Mais cela génère du coup un surcoût au niveau HTTP car cela génère des requêtes de beaucoup de fichiers.
Il est maintenant possible de mettre en cache ses fichiers javascript et CSS en un seul fichier en production, tout en les gardant séparés pour le développement.
Pour augmenter le nombre de connexions conccurrentes, il est possible de spécifier dans les fichiers de configuration des adresses de serveurs qui hébergeront les fichiers statiques :

ActionController::Base.asset_host = “assets%d.example.com”


Sécurité
Rails 2.0 embarque un mécanisme interne pour contrer les attaques CSRF sur les formulaires et les appels AJAX.
De même pour les attaques XSS, la méthode sanitize qui utilisait une blacklist pour fonctionner, ce qui compliquait la tâche pour la mise à jour de cette liste, utilise dorénavant une whitelist qui garantira une meilleure protection.

Gestion des exceptions
En plus de pouvoir gérer les exceptions par action (par un bloc rescue), une nouvelle macro rescue_from permet de capter toutes les exceptions d'un certain type de manière globale aux controllers.

Session basée sur les cookies
Les sessions ne sont plus stockées par défaut sur le système de fichiers du serveur web mais au niveau du client sous une forme qui ne peut pas être forgée. En revanche, le contenu sera visible, donc ce mécanisme de stockage de sessions n'est pas adapté si vous avez besoin d'y stocker une information que ne doit pas voir l'utilisateur.

Profileur de requêtes
Pour détecter les points de contention de votre application, il est possible grâce à un nouveau script de générer un rapport qui détaillera tout cela (script/performance/request)

Performance
La plus grosse avancée au niveau des performances se situe au niveau du cache introduit directement dans l'ActiveRecord, ce qui permet de mettre en cache des requêtes SELECT similaires qui permettra d'éviter des requêtes inutiles sur la base de données.
Les fixtures ont été grandement améliorées, on parle de gain pouvant atteindre 100 à 200%.
Beaucoup de chose dans le core de Rails ont été externalisés en greffon (tous les acts_as_*, in_place_editor, autocomplete_for, paginate, ...), ce qui allège considérablement le core et permet de charger uniquement ce qui est nécessaire.

Migrations plus sexy
Un nouveau format, plus efficace et moins verbeux a été mis en place :
Avant
create_table :people do |t|
t.column, "account_id", :integer
t.column, "first_name", :string, :null => false
t.column, "last_name", :string, :null => false
t.column, "description", :text
t.column, "created_at", :datetime
t.column, "updated_at", :datetime
end

Après
create_table :people do |t|
t.integer :account_id
t.string :first_name, :last_name, :null => false
t.text :description
t.timestamps
end

XML en entrée, JSON pour la sortie
Il existe maintenant la désérialisation en XML et la sérialisation en JSON.

Le debuggueur de retour !
Grâce au paquet (gem) ruby-debug, il suffit de placer le mot clé debugger quelque part dans le code et de lancer le serveur avec l'option -u pour bénéficier d'un point d'arrêt directement dans le terminal exécutant le serveur, avec possibilité de retour arrière, lister les variables...

Comment installer Rails 2.0
Pour installer Rails, il est plus facile de passer par la commande gem (installateur de paquets ruby) :
gem install rails
Ca marche aussi pour la mise à jour, mais pensez bien à installer les greffons qui ont été éjectés du core et que vous utilisez !

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

[+] Célèbre ?

Posté par IsNotGood () le 11/12/2007 à 20:08. (lien). Évalué à -3.

> Ruby on Rails, le célèbre framework

Je ne le connais pas, j'imagine que beaucoup beaucoup de gens ne l'a pas utilisé ni le connait.
Perl, php, python, java doivent être plus "célèbre".

NB : Je ne remet en rien en cause les mérites de Ruby (que j'ignore totalement ; oui, c'est de ma faute).