5 nouvelles fonctionnalités impressionnantes de Rails 3

Après plus d'un an de développement, Ruby on Rails 3 a été officiellement rendu public il y a quelques semaines. Plus qu'une mise à jour itérative, cette version très attendue était une refactorisation majeure du populaire framework Ruby. Continuez votre lecture pour apprendre cinq des nouvelles fonctionnalités les plus impressionnantes de Ruby Rails 3.


1. JavaScript discret

L’une de mes nouvelles fonctionnalités préférées de Ruby on Rails 3 est l’introduction du code JavaScript unobtrusif (UJS) dans toutes ses fonctions d’aide JavaScript. Dans les versions précédentes de Rails, JavaScript était généré en ligne avec HTML, ce qui provoquait un code laid et quelque peu fragile..

Par exemple, Rails vous permet d’utiliser son méthode link_to générer un lien de suppression pour un objet.

 <%= link_to "Delete this Post", @post, :confirm => "Voulez-vous vraiment supprimer ce message?",: Method =>: delete%>

L'utilisation de cette méthode dans votre vue générerait les éléments suivants dans Rails 2:

 Supprimer ce post

Rails 3 générerait quelque chose de beaucoup plus simple:

 Supprimer ce post

Rails 3 remplace tout le code JavaScript intégré par quelques attributs HTML5. Tous les gestionnaires d’événements JavaScript permettant de gérer la boîte de confirmation et la suppression sont stockés dans un fichier JavaScript central, inclus dans chaque projet rails..

Un grand avantage de cette nouvelle méthode est que les helpers JavaScript sont agnostiques envers le framework. Au lieu d'être lié à la bibliothèque Prototype comme dans Rails 2, vous pouvez désormais choisir le framework JavaScript de votre choix (les applications Rails sont fournies avec Prototype par défaut, mais jQuery est désormais officiellement pris en charge..


2. Sécurité améliorée

Une autre nouvelle fonctionnalité impressionnante de Rails 3 est que la protection XSS est maintenant activée par défaut. Rails 2 a pris en charge la protection XSS via l’utilisation du h méthode.

 <%= h @comment.text %>

le h Cette méthode échapperait à HTML et à JavaScript pour garantir qu’aucun code malveillant côté client n’est exécuté. Cette méthode a bien fonctionné, mais il y avait un problème: vous deviez réellement vous souvenir d'utiliser le h méthode partout où l'entrée entrée par l'utilisateur était affichée. Si vous avez oublié un seul lieu, vous étiez vulnérable à une attaque XSS.

Dans Rails 3, toutes les entrées sont échappées par défaut, ce qui permet au développeur de ne pas avoir à se souvenir d'échapper partout où un code malveillant pourrait être présent. Pour les moments où vous souhaitez autoriser l’apparition de données non échappées dans votre vue, vous pouvez utiliser le brut méthode pour dire à Rails 3 de ne pas échapper aux données.

 <%= raw @comment.text %>

3. Nouveau moteur de requête

Rails 3 comprend un nouveau moteur de requête qui facilite la récupération des données souhaitées et vous donne plus de flexibilité dans le code de votre contrôleur. Ces modifications apparaissent à divers endroits, mais le cas le plus courant consiste à récupérer des données dans votre contrôleur. Dans Rails 2, vous pouvez utiliser la méthode find pour extraire les données recherchées, en passant des arguments pour spécifier des conditions, un groupement, des limites et toute autre information de requête. Par exemple:

 @posts = Post.find (: all,: conditions => ["category IN (?)", catégories],: limit => 10,: order => "created_on DESC")

trouve les dix premiers postes dans certaines catégories spécifiées, classés par date de création.

Dans Rails 3, chacun des paramètres passés a sa propre méthode, qui peut être chaînée pour obtenir les mêmes résultats..

 @posts = Post.where (["category IN (?)", categories]). order ("created_on DESC"). limit (10)

La requête n'est réellement exécutée que lorsque les données sont nécessaires. de sorte que ces méthodes peuvent même être utilisées sur plusieurs déclarations.

 @posts = Post.where (["catégorie IN (?)", catégories]) if (condition_a) @posts = @ posts.where (['approuvé =?', vrai]) sinon @posts = @ posts.where ( ['approuvé =?', faux]) fin

Ceci n’est qu’un exemple simple, mais devrait vous donner une idée de la façon dont cette nouvelle syntaxe peut être plus utile..


4. Email plus facile

Le module ActionMailer a été réécrit pour faciliter l'envoi d'applications par courrier électronique à votre application dans Rails 3. Il y a quelques modifications, mais voici quelques-unes de mes préférées..

1. Paramètres par défaut

Dans Rails, un courrier est une classe pouvant avoir plusieurs méthodes, chacune configurant et envoyant généralement un courrier électronique. Auparavant, vous deviez définir tous les paramètres de chaque email séparément dans chaque méthode..

 classe UserMailer < ActionMailer::Base def welcome_email(user) from "[email protected]" # other paramters end def password_reset(user) from "[email protected]" # other parameters end end

Dans Rails 3, vous pouvez spécifier des valeurs par défaut pouvant être éventuellement écrasées dans chaque méthode..

 classe UserMailer < ActionMailer::Base default :from => '[email protected]',: return_path => '[email protected]' def welcome_email (utilisateur) # pas besoin de spécifier à partir de la fin du paramètre

2. API de nettoyage

Dans les versions précédentes de Rails, vous deviez envoyer des courriers électroniques à l'aide de méthodes spéciales créées dynamiquement par ActionMailer. Par exemple, si vous souhaitez envoyer le courrier électronique de bienvenue dans l'exemple ci-dessus, vous devez appeler:

 UserMailer.deliver_welcome_email (@user)

Dans Rails 3, vous pouvez simplement appeler

 UserMailer.welcome_email (@user) .deliver

Cela a plus de sens sur le plan sémantique et vous permet en outre de récupérer et de manipuler le Courrier object avant d'envoyer l'e-mail.


5. Gestion de la dépendance

L'un des points forts du framework Ruby on Rails est la pléthore de gemmes disponibles pour les développeurs. Qu'il s'agisse de l'authentification, de la gestion des transactions financières, du téléchargement de fichiers ou de presque toute autre chose, il est fort probable qu'un joyau existe pour vous aider à résoudre votre problème..

Des problèmes peuvent survenir, toutefois, si vos gemmes nécessitent d'autres gemmes, ou si les développeurs travaillent dans des environnements différents, entre autres. Pour vous aider à résoudre ce type de situation, Rails 3 ajoute la gem Bundler pour vous aider à gérer vos dépendances. L'utilisation de Bundler dans Rails 3 est extrêmement simple. ajoutez une ligne pour chaque gemme dont vous avez besoin dans votre Gemfile, un fichier inclus dans la racine de chacune de vos applications.

 joyau 'authlogic'

Une fois que vous avez inclus toutes vos gemmes, lancez:

 installation groupée

et Bundler téléchargera et configurera toutes les gemmes et leurs dépendances nécessaires au projet..

Bundler vous permet également de spécifier que certaines pierres précieuses ne doivent être configurées que dans certains environnements (développement, production, tests, etc.)..

Ce ne sont là que quelques-uns des nombreux changements inclus dans Ruby on Rails 3. La plupart des anciennes API fonctionnent toujours dans Rails, même si elles sont obsolètes, pour faciliter la mise à jour. Donc, si vous vous demandez si vous souhaitez ou non mettre à niveau votre application Rails existante, alors allez-y!

Merci d'avoir lu!