Après plusieurs bêtas, Ruby on Rails entre en version 3.0 finale. Cette toute nouvelle version débarque avec un lot de nouvelles fonctionnalités et d'innombrables corrections de bugs.
Ruby on Rails (ou RoR pour les intimes) est un
framework web open-source écrit en
Ruby par David Heinemeier Hansson et qui suit le modèle MVC. Son objectif est de rendre le développement web aisé, tout comme une grande variété de frameworks :
Django (Python),
Lift (Scala), etc.
RoR possède de bons atouts qui le caractérisent :
- il permet de créer des sites web simplement et rapidement (voir la documentation sur developpez.com) ;
- la flexibilité de Ruby lui permet de suivre DRY et ainsi d'avoir un résultat impressionnant et facilement maintenable pour un minimum de code ;
- RoR offre également des technologies nativement intégrées comme la technologie AJAX permettant d’offrir aux utilisateurs une interface riche et ergonomique ;
- la possibilité de créer un petit site web relativement complet grâce à de nombreux outils (générateurs de code principalement) déjà intégrés dans RoR.
Il peut donc en résulter des sites qui proposent des interfaces riches en fonctionnalités et pourvues d’une forte interactivité.
Les nouveautés de la version 3.0
Arel
Rails a choisi d'adopter le moteur de requêtes Arel pour Active Record, cette implémentation offrant la possibilité de faire des requêtes plus cohérentes et facilement composables. Elle permet aussi de retarder l’exécution de la requête jusqu'au moment où elle devient vraiment nécessaire.
En voici un exemple :
Code : Ruby | users = User.where(:name => "david").limit(20)
users = users.where("age > 29")
# SELECT * FROM users
# WHERE name = "david" AND age > 29
# ORDER BY name
# LIMIT 20
users.order(:name).each { |user| puts user.name } # La requête n'est exécutée qu'ici
|
Nouvelle interface pour les routes
L'interface pour définir les routes (quelle page est affichée pour quelle url et quels paramètres) a été repensée et a maintenant une syntaxe plus claire et relativement plus concise.
Toujours dans la syntaxe, on constate que cette version en apporte une qui privilégie le style d'architecture
REST et qui offre également une plus grande flexibilité.
Code : Ruby 1
2
3
4
5
6
7
8
9
10
11
12
13 | root :to => 'projects#index'
resources :people do
resource :avatar
collection do
get :winners, :losers
end
end
# /descriptions, /fr/descriptions, /en/descriptions
scope '(:locale)', :locale => /fr|en/ do
resources :descriptions
end
|
Bundler
La gestion des dépendances d'une application Rails a longtemps été un soucis pour les développeurs. Pour résoudre ces problèmes, Bundler permet de spécifier l'environnement dans lequel s'exécute l'application.
L'installation est ainsi automatique et ne nécessite qu'un
bundle install.
Bundler possède aussi des fonctionnalités avancées telles que la possibilité d'utiliser directement un projet sur Git (et donc de bénéficier des dernières mises à jour).
Voici un exemple de Gemfile :
Code : Ruby 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | source :rubygems
gem 'rails', '3.0.0'
# ou avec la version 'edge'
gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'mysql2'
group :development do
gem 'capistrano'
end
group :test do
gem 'rspec-rails', '>= 2.0.0.beta.19'
end
|
Au revoir les problèmes d'encodage !
La navigation sur Internet a souvent été rendue pénible du fait des problèmes d'
encodage. Ceux-ci sont le plus souvent causés par le mélange d'informations sous différents modes d'encodage.
Avec une gestion native des encodages dans Ruby 1.9, Rails peut maintenant s'assurer de ne plus jamais assembler des données dans des encodages différents, et facilement les convertir au besoin.
Action Mailer
L'une des grandes nouveautés de cette version 3.0, c'est sûrement la réécriture de
l'API ActionMailer. En bref, cette API permet d'envoyer des emails à partir de l'application web.
Auparavant, pour transmettre des emails, il fallait créer un modèle ActionMailer :
Code : Ruby | class UserMailer < ActionMailer::Base
def welcome_email(user)
recipients user.email
from "I'm nobody <42@unknown>"
subject "Hello World"
body {:user => user }
end
end
|
Avec Rails 3.0, c'est déjà plus simple grâce à l'intégration de la nouvelle
bibliothèque Mail sur Action Mailer :
Code : Ruby | class UserMailer < ActionMailer::Base
default :from => "I'm nobody <42@unknown>"
def welcome_email(user)
@user = user
attachments['terms.pdf'] = File.read('/path/terms.pdf')
mail(:to => user.email, :subject => "Hello World")
end
end
|
Sécurité
Internet est un environnement vaste et dangereux. C'est pourquoi, auparavant, RoR offrait une protection contre les
attaques XSS assez complexe. Entre autres, il fallait échapper manuellement dans les vues les entrées de l'utilisateur avec des
helpers.
Avec cette nouvelle version, il suffit maintenant de déclarer les entrées à
ne pas échapper en les marquant comme
html_safe. Ce qui est donc plus facile et privilégie la sécurité proposée par défaut.
Autres améliorations
Un certain nombre d'autres nouveautés sont arrivées dans cette version 3.0, vous pouvez consulter la liste des plus importantes sur
l'annonce officielle de la sortie de Rails 3.0.
Liens utiles et sources
40 Participations
Connectez-vous !
Connectez-vous !
Revenir à la liste des news