Je voudrais vérifier quelques requêtes générées par ActiveRecord, mais je n'ai pas besoin de les exécuter réellement. Existe-t-il un moyen d'obtenir la requête avant qu'elle renvoie son résultat?Comment puis-je voir le SQL ActiveRecord générer?
Répondre
Ces deux articles devraient vous aider à faire ce que vous voulez.
http://weblog.jamisbuck.org/2007/1/8/watching-activerecord-do-it-s-thing
http://weblog.jamisbuck.org/2007/1/31/more-on-watching-activerecord
Ceux-ci continuent d'exécuter les requêtes, mais ils résolvent le problème que je recherchais vraiment, car les requêtes (a) sont idempotentes et (b) ne prennent pas trop de temps. –
Je pense qu'il est enterré dans:
construct_finder_sql,
http://groups.google.com/group/rubyonrails-talk/browse_frm/thread/38c492e3939dd9bf/?pli=1
tail -f log/development.log
Works dans les paramètres par défaut ou lorsque vous s et votre niveau de journalisation à DEBUG.
L'article de Jamis est obsolète, ou au moins ne fonctionne pas mon application Rails (probablement en raison d'une autre raison avec une application de 30 000 lignes de 3 ans). Cependant, cela fonctionne dans une console tout moment:
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
Notez que des rails 3+, vous pouvez simplement virer de bord sur un 'to_sql' à la requête:' Posts.where (: quelque chose => toto) .to_sql' – DGM