Aller au menu - Aller au contenu

Découvrez Ruby on Rails dans sa version 3.0 !

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Eregon et neowillow
Publié : le 03/09/2010 à 21:20:08
Catégorie : Programmation
Visualisations : 7 000

Licence : Creative Commons BY SA

Découvrez Ruby on Rails dans sa version 3.0 !

Image utilisateur

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
1
2
3
4
5
6
7
8
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

Image utilisateur

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
1
2
3
4
5
6
7
8
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
1
2
3
4
5
6
7
8
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é


Image utilisateur
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

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  Suivante
Hors ligne planete.game57 # Posté le 03/09/2010 à 21:25:25
Avatar

Études : IRIS

Excellente nouvelle, ça me donne envie d'essayer Ruby que je ne connais pas du tout, car j'aime la programmation Web.

Merci. ;)

xHTML/CSS |||||||||| 100% | PHP/MySQL |||||||||| 100% | Langage C |||||||||| 8.5%
Python |||||||||| 100% | JavaScript |||||||||| 5.5% | Photoshop |||||||||| 0.0%
Smarty |||||||||| 100%

Image utilisateurImage utilisateur
 
Hors ligne Princeps # Posté le 03/09/2010 à 21:28:04
Avatar

je ne connais ni Ruby ni RoR mais les modifications ont l'air bien particulièrement celles sur l'encodage et les failles XSS.

« le nucléaire, c'est l'énergie du désespoir » - « L’erreur est humaine, mais un vrai désastre nécessite un ordinateur. »
« Le jour où microsoft fera un truc qui ne plante pas, ce sera un clou! » - « Même Chuck Norris ne peut pas compter tous les bugs de Windows! »
Fourmicosme, jeu par navigateur gratuit dans le monde des fourmis 22 janvier 2012 : La version 1.0 finale de Fourmicosme est sortie !
Fourmicosme un nouveau jeu par navigateur, de stratégie, gratuit, innovant, fait par des lycéens sur le thème des fourmis. Lire l'Histoire, le Guide, les Projets ou le sujet sur le sdz de Fourmicosme.
Passez au moins voir svp, pour aider un petit jeu à démarrer. Donnez aussi votre avis, surtout si vous aimez pas (donnez des raisons).


Image utilisateur
Image utilisateur
Image utilisateur
Princeps alias Le loup des nues (changement de pseudo le 8/05/2010)
 
Hors ligne lonestike # Posté le 03/09/2010 à 21:29:59
Avatar

Sa me donne envie de me mettre à rubis tout ça :)
Merci pour cette news bien complète !

La chose qui me différencie de tous les autres zéros ?
Je hais Linux !
 
Hors ligne Eregon # Posté le 03/09/2010 à 21:31:23
Avatar

Ville : Ham-sur-heure
Pays : Belgique

Citation : planete.game57
Excellente nouvelle, ça me donne envie d'essayer Ruby que je ne connais pas du tout, car j'aime la programmation Web.

Merci. ;)


Ravi de te l'entendre dire :)
Hors ligne Moonlight-Angel # Posté le 03/09/2010 à 21:32:55
Moi ? Non.
Avatar

Comme l'a dit Princeps, la nouveauté sur l'encodage automatique en cas de besoin et la protection contre les failles XSS est superbe. Je n'ai jamais essayé Ruby ou RoR, et franchement, coder de cette manière ne m'attire pas trop. Je préfère le bon vieux code fait maison, malgré les différents inconvénients :D .

Image utilisateur Si votre problème est résolu,
pensez à cliquer sur Résolu en bas de page !


Image utilisateur Fansite/Encyclopédie sur Dofus.
 
Hors ligne Eregon # Posté le 03/09/2010 à 21:42:49
Avatar

Ville : Ham-sur-heure
Pays : Belgique

Citation : Moonlight-Angel
Comme l'a dit Princeps, la nouveauté sur l'encodage automatique en cas de besoin et la protection contre les failles XSS est superbe. Je n'ai jamais essayé Ruby ou RoR, et franchement, coder de cette manière ne m'attire pas trop. Je préfère le bon vieux code fait maison, malgré les différents inconvénients :D .


Code maison? Essaie quelque chose de plus "léger" alors, comme Sinatra ou Camping,
ou crée toi-même ton framework à partir de Rack ;)
Hors ligne bluestorm # Posté le 03/09/2010 à 21:43:45
dont ask to ask
Avatar
Groupe : Anciens
Flux RSS

Je trouve dommage que cette news ne parle pas du tout de Merb et de son intégration dans RoR.
 
Hors ligne Eregon # Posté le 03/09/2010 à 21:49:12
Avatar

Ville : Ham-sur-heure
Pays : Belgique

Citation : bluestorm
Je trouve dommage que cette news ne parle pas du tout de Merb et de son intégration dans RoR.

Tout à fait, je voulais rajouter ça ce soir mais la news est vite parue avant que je le fasse ...
Sinon, mentionner Merb serait probablement un petit peu hors-sujet, mais, certes, cette "fusion" est intéressante et a apporté beaucoup à Rails.
Hors ligne Marg51 # Posté le 03/09/2010 à 21:49:34

Avatar

Ville : Saint pierre de boeuf
Pays : France métropolitaine

News courte [edit : en ce qui concerne la présentation de son histoire j'entends] mais qui touche un sujet qui m'intéresse énormément !

Powered by Image utilisateur
 
Hors ligne neowillow # Posté le 03/09/2010 à 21:50:08
(/◔ ◡ ◔)/
Avatar
Groupe : Anciens

Effectivement, ça aurait pu être très intéressant. Mais, on n'y a pas pensé à temps. :euh:
Enfin, merci pour vos commentaires.

#LGDF: victor vaincra !
« Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi »
Statistiques mondiales en temps réel. - FAQ C - The C LRG - FAQ Java - Python - OCaml - quoi.info




 
Hors ligne planete.game57 # Posté le 03/09/2010 à 21:55:34
Avatar

Études : IRIS

Citation : Eregon
Citation : planete.game57
Excellente nouvelle, ça me donne envie d'essayer Ruby que je ne connais pas du tout, car j'aime la programmation Web.

Merci. ;)


Ravi de te l'entendre dire :)


Ça me changera du PHP. :p

xHTML/CSS |||||||||| 100% | PHP/MySQL |||||||||| 100% | Langage C |||||||||| 8.5%
Python |||||||||| 100% | JavaScript |||||||||| 5.5% | Photoshop |||||||||| 0.0%
Smarty |||||||||| 100%

Image utilisateurImage utilisateur
 
Hors ligne Edmeral # Posté le 03/09/2010 à 21:57:13
Ulquiorra ♥ Ubuntu !
Avatar

Ville : Meknès
Pays : Maroc

Bonne nouvelle !



 
Hors ligne neowillow # Posté le 03/09/2010 à 21:59:33
(/◔ ◡ ◔)/
Avatar
Groupe : Anciens

Citation : marg51
News courte [edit : en ce qui concerne la présentation de son histoire j'entends]

Personnellement, j'ai jugé ça inutile, étant donné le fait que l'on ait déjà eu plusieurs news sur le SdZ traitant du même sujet. ;)

#LGDF: victor vaincra !
« Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi »
Statistiques mondiales en temps réel. - FAQ C - The C LRG - FAQ Java - Python - OCaml - quoi.info




 
Hors ligne Mow # Posté le 03/09/2010 à 22:30:11
La vie sans compromis.
Avatar
Flux RSS

Ville : Grenoble
Pays : France métropolitaine

Merci pour la news !
 
Hors ligne Nami Doc # Posté le 03/09/2010 à 22:32:15
Lamaer taler dansk

News sympathique, même si on peut regretter certains oublis, au niveau des routes et surtout sur Sinatra qui est maintenant intégrable.
Arel est clairement ... Mis de côté. Vous montrez 1% de ce qu'il est capable de faire ...

Le fond reste bon.

La flemme conquerra le monde !
Secret (cliquez pour afficher)
Image utilisateur
 
Connecté pacman2 # Posté le 03/09/2010 à 22:35:13
Zzzz
Avatar

RoR à l'air bien et ça me changerais du PHP aussi qui commence à me faire un peu ch**r
 
Hors ligne nietzsche # Posté le 03/09/2010 à 22:39:55
Fan de Cynthia Prion
Avatar
Groupe : Bannis

Citation : Nami Doc
News sympathique, même si on peut regretter certains oublis, au niveau des routes et surtout sur Sinatra qui est maintenant intégrable.
Arel est clairement ... Mis de côté. Vous montrez 1% de ce qu'il est capable de faire ...

Le fond reste bon.


C'est pas un tutoriel aussi… :p

#LGDF: nietzsche vaincra !
Image utilisateur

Si jamais joyeusement je fus assis là où d'antiques dieux jouissent ensevelis, bénissant le monde, aimant le monde auprès des mémoriaux de ceux qui jadis ont calotté le monde ; - - car me sont chères même les églises et les tombeaux des dieux dès que le ciel, au travers de leurs toits baisés, regarde d'un œil pur; comme l'herbe et le rouge pavot, sur des ruines d'églises j'aime m'assoupir. - oh ! comment de l'éternité n'aurais-je concupiscence, et du nuptial anneau des mazots, - de l'anneau du retour ?
 
Connecté Dark Ghost # Posté le 03/09/2010 à 22:53:37
NanoVoxel
Avatar
Flux RSS

Ville : Arles
Pays : France métropolitaine
Études : IUT de Provence, site d'Arles

En effet, Ruby on Rails semble très intéressant pour un développement web rapide. Je vais peut-être m'y mettre, à voir ! ^^
 
Hors ligne hdpsociete # Posté le 03/09/2010 à 23:45:02
Vive les claviers...
Avatar

Ville : Woluwé-saint-pierre
Pays : Belgique

Ca me tente...

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur




 
Hors ligne ThePooh # Posté le 04/09/2010 à 02:44:59
Luxe, Calme, Volupté
Avatar

C'est devenu un vrai langage ou sans son framework c'est toujours useless ?

Neetcafe.com (Twitter - Ca recrute [Python / Twisted] - Neet.Blog) - YouTube (Mes AMVs)
Développeur / SEO / Graphiste / Otaku
Right now using : CakePHP 2.0- MongoDB - Node.JS - Redis - Python
Neetcafe <3 Open-Source : Cake-Resque Our CakePHP plugin to manage queue using Redis + Resque
Clair-et-Net éleveur de pixels !
 
Connecté maeln # Posté le 04/09/2010 à 07:02:42
Avatar

Ville : Lamaland
Pays : France métropolitaine
Études : Lycée Clemenceau - Nantes

Ruby a toujours été un vrais langage et il existe un bon nombres de binding/librairies pour faire des choses très diverses et varié ( et pas que pour le web ). Faut arrêter avec ce troll ...

En tout cas merci pour la nouvelle :) .

Image utilisateur
 
Hors ligne Eregon # Posté le 04/09/2010 à 10:55:32
Avatar

Ville : Ham-sur-heure
Pays : Belgique

Citation : ThePooh
C'est devenu un vrai langage ou sans son framework c'est toujours useless ?

A ton avis: http://www.siteduzero.com/news-62-3739 [...] es-idees.html ?

Ruby existe depuis bien plus longtemps que Rails, c'est juste que Rails est peut-être plus connu et donc certaines personnes ont connus Ruby directement avec Rails (Ruby on Rails, donc clairement y'a du Ruby avant ...)

(useless, ça veut juste dire que tu ne l'as jamais (bien) utilisé hein')

Sinon, voilà un lien à rajouter à l'article, ce sont de très bons screencasts (en anglais) sur Rails 3.
Hors ligne anonyme # Posté le 04/09/2010 à 12:20:37

Je trouve l'exemple des e-mails assez amusant : on est (apparemment hein) passé d'un DSL super-hype (parce que Ruby c'est trop bien pour faire des DSL, à ce qu'il paraît) à une bibliothèque tout ce qu'il y a de plus classique comme tout le monde sait déjà faire.

Pourquoi ? Les rockstars ont pris leur retraite ?
Hors ligne Moonlight-Angel # Posté le 04/09/2010 à 12:46:55
Moi ? Non.
Avatar

Citation : Eregon
Code maison? Essaie quelque chose de plus "léger" alors, comme Sinatra ou Camping,
ou crée toi-même ton framework à partir de Rack ;)

Non non, une simple architecture MVC faite maison me convient. Après, tout le code derrière, je le fais en PHP, je n'ai jamais été trop attiré par des Frameworks.
Du PHP pur, je trouve ça super pour le moment. :D

Peut-être qu'un jour, j'en aurait marre, et je me tournerais vers un Framework ? ^^

Image utilisateur Si votre problème est résolu,
pensez à cliquer sur Résolu en bas de page !


Image utilisateur Fansite/Encyclopédie sur Dofus.
 
Hors ligne gnomnain # Posté le 04/09/2010 à 13:31:01
Blblbl !
Avatar
Groupe : Anciens

Arel est un peu décevant :
Code : Ruby
1
2
users = User.where(:name => "david").limit(20)
users = users.where("age > 29")

génère la requête
Code : SQL
1
2
SELECT * FROM users WHERE name = "david" AND age > 29 
ORDER BY name LIMIT 20


Ça correspond bien à la logique SQL, mais pas à ce qu'on attend d'un système avec des requêtes composables : on s'attend à ce que le traitement qu'on indique s'applique à l'ensemble de résultats renvoyés par la sous-requête précédente, comme si il avait été récupéré en local. Dans ce cas, on devrait avoir tous les utilisateurs de plus de 29 ans parmi les 20 premiers qui s'appellent john, alors que ce qu'on récupère en fait, c'est 20 utilisateurs nommés john et de plus de 29 ans, ce qui ne correspond pas à l'ordre des opérations exprimées. Donc, les requêtes composables, c'est pas encore ça.
Il faudrait probablement générer une sous-requête (ce code n'est probablement pas du SQL valide) :
Code : SQL
1
2
3
SELECT * 
FROM (SELECT * FROM users WHERE name = "david" LIMIT 20) 
WHERE age > 29


Ils pourraient au moins l'opération limit à "terminer" la requête, en empêchant d'appliquer des filtres aux résultats renvoyés avant de récupérer l'ensemble des résultats en local.

Image utilisateur
Haskell - Learn You a Haskell - Real World Haskell - xmonad - OCaml
Apprenez Haskell ! - #ircduzero
<colbseton> Serialk: tu cherches vraiment des liens logiques dans tout ce que je raconte ?
 
Hors ligne gnomnain # Posté le 04/09/2010 à 13:37:19
Blblbl !
Avatar
Groupe : Anciens

Citation : ThePooh
C'est devenu un vrai langage ou sans son framework c'est toujours useless ?

C'est rigolo de troller, mais c'est plus intéressant avec des arguments. Si tu veux pas argumenter, abstiens-toi la prochaine fois.

Image utilisateur
Haskell - Learn You a Haskell - Real World Haskell - xmonad - OCaml
Apprenez Haskell ! - #ircduzero
<colbseton> Serialk: tu cherches vraiment des liens logiques dans tout ce que je raconte ?
 
Hors ligne bluestorm # Posté le 04/09/2010 à 14:16:48
dont ask to ask
Avatar
Groupe : Anciens
Flux RSS

Citation : gnomnain
Arel est un peu décevant : [..]

Ça correspond bien à la logique SQL, mais pas à ce qu'on attend d'un système avec des requêtes composables : on s'attend à ce que le traitement qu'on indique s'applique à l'ensemble de résultats renvoyés par la sous-requête précédente, comme si il avait été récupéré en local. Dans ce cas, on devrait avoir tous les utilisateurs de plus de 29 ans parmi les 20 premiers qui s'appellent john, alors que ce qu'on récupère en fait, c'est 20 utilisateurs nommés john et de plus de 29 ans, ce qui ne correspond pas à l'ordre des opérations exprimées. Donc, les requêtes composables, c'est pas encore ça.


C'est le moment de vendre sa came.

Code : OCaml
1
2
3
4
5
6
7
# let users_table = <:table< users ( name text, age integer ) >>;;
# let users = << u limit 20 | u in $users_table$; u.name = "david" >>;;
# let users = << u | u in $users$; u.age > 29 >>;;

# Sql.sql_of_view users;;
- : string =
"(SELECT u.name AS name, u.age AS age FROM (SELECT u.name AS name, u.age AS age FROM users AS u WHERE (u.name = 'david') LIMIT 20) AS u WHERE (u.age > 29))"


Bon, la requête auto-générée est assez illisible. Un peu compressée :
Code : SQL
1
2
3
SELECT u.name, u.age
FROM (SELECT u.name, u.age FROM users AS u WHERE u.name = 'david') AS u
WHERE u.age > 29
 
Hors ligne Eregon # Posté le 04/09/2010 à 14:28:30
Avatar

Ville : Ham-sur-heure
Pays : Belgique

Citation : gnomnain
Il faudrait probablement générer une sous-requête (ce code n'est probablement pas du SQL valide) :
Code : SQL
1
2
3
SELECT * 
FROM (SELECT * FROM users WHERE name = "david" LIMIT 20) 
WHERE age > 29


Ils pourraient au moins l'opération limit à "terminer" la requête, en empêchant d'appliquer des filtres aux résultats renvoyés avant de récupérer l'ensemble des résultats en local.


Non, c'est là tout l'intérêt des requêtes que j'ai dit "composables" (créées petit à petit et évaluées qu'à la fin, et non au sens mathématique du terme): ne faire qu'une seule requête, afin d'éviter des requêtes intermédiaires inutiles.

L'exemple d'utilisation de #limit n'est probablement pas le plus clair, mais en fait l'ordre dans lequel est appelé les méthodes ne doit rien changer au résultat. Cela permet donc d'appliquer des filtre successifs en mettant le #limit ou l'on veut (utile pour la pagination par exemple).

Citation : Arel
All operators are chainable in this way, and they are chainable any number of times, in any order.

Pour plus d'info, voire Arel
Hors ligne gnomnain # Posté le 04/09/2010 à 14:45:35
Blblbl !
Avatar
Groupe : Anciens

Citation : Eregon

Non, c'est là tout l'intérêt des requêtes que j'ai dit "composables" (créées petit à petit et évaluées qu'à la fin, et non au sens mathématique du terme): ne faire qu'une seule requête, afin d'éviter des requêtes intermédiaires inutiles.

L'exemple d'utilisation de #limit n'est probablement pas le plus clair, mais en fait l'ordre dans lequel est appelé les méthodes ne doit rien changer au résultat. Cela permet donc d'appliquer des filtre successifs en mettant le #limit ou l'on veut (utile pour la pagination par exemple).


Mais cela oblige à voir les opérations comme des manipulations de requêtes, et pas comme des opérations sur des ensembles de données (qui ne sont pas en local sur la machine, mais on s'en fiche). Au lieu d'abstraire le SQL et tous ses côtés chiants, ça ne fait que bouger un peu la syntaxe. De plus, ça gêne la composabilité, parce que tu interprètes plutôt les requêtes données par les fonctions auxiliaires comme des ensembles de données.

(Exemple : tu veux voir le nombre de personnes codant en Python dans le top10 de prologin. Pour cela, tu as une fonction top10 qui prépare la requête calculant ce top 10. Mais si tu écris top(10).where(:langage => "python") ET que top(10) utilise LIMIT (et par exemple, pas un WHERE sur un éventuel champ "classement), tu vas te retrouver avec les 10 meilleurs codeurs python. Tu deviens donc dépendant de la manière dont la requête originale a été codée, alors que ça ne devrait pas être le cas : à mon avis, les données renvoyées par la requête résultat des opérations appliquée à une requête originale ne devraient dépendre que des données que cette requête originale renvoie, et pas de son implémentation (seule les performances devraient pouvoir différer)

Image utilisateur
Haskell - Learn You a Haskell - Real World Haskell - xmonad - OCaml
Apprenez Haskell ! - #ircduzero
<colbseton> Serialk: tu cherches vraiment des liens logiques dans tout ce que je raconte ?
 
Hors ligne bluestorm # Posté le 04/09/2010 à 14:59:14
dont ask to ask
Avatar
Groupe : Anciens
Flux RSS

En fait, à lire la page de Arel, j'ai l'impression que le type a du bon sens, et une idée correcte de ce que devrait faire son outil : je me demande si le traitement actuel de LIMIT n'est pas simplement un bug (ou peut-être un compromis temporaire dans l'implémentation).

Il y a quand même des bouts où on a l'impression qu'il ne se prend pas pour n'importe qui : Citation
Think of this as a preview of the kind of radical functionality that is to come, stuff no other "ORM" is doing.


Globalement, ça a quand même l'air moins mature et moins puissant que la partie équivalente de SQL Alchemy par exemple (ou de LINQ-SQL). Et moins intéressant que Macaque, il n'y a pas de considération de sûreté.
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news