Quando eseguo le query (ad esempio MyModel.where(...)
o record.associated_things
) nella console, come posso vedere le query del database che vengono eseguite in modo da ottenere una maggiore comprensione di ciò che sta accadendo?Come mostrare le query SQL eseguite nella console di Rails?
risposta
Inserire questa linea nella console:
ActiveRecord::Base.logger = Logger.new(STDOUT)
Perfetto , proprio quello di cui avevo bisogno. Hai qualche consiglio su dove andare a trovare piccoli trucchi come questi sono documentati? – randombits
Sicuro. http://slash7.com/2006/12/21/secrets-of-the-rails-console-ninjas/ e http://stackoverflow.com/questions/123494/whats-your-favourite-irb-trick Plus http : //railscasts.com/ è sempre buono. –
Questo funziona per le guide 3+ ma non 2, vedere http://stackoverflow.com/a/1576221 se ci sei ancora :) – rogerdpack
ad-hoc query ActiveRecord nella console non lo fanno comunque. Ad ogni modo a cambia questo comportamento?
Ne sei sicuro? Uso sempre la console per cose come questa. Per l'ambiente di sviluppo, il comportamento predefinito è registrare le query su development.log. Sei sicuro di non aver cambiato il tuo livello di registro nel tuo ambiente?
Vedete quanto segue in development.rb?
config.log_level = :debug
In Rails 3+ è possibile utilizzare il metodo di to_sql
ActiveRecord :: Relation:
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3"
esiste un metodo .explain
in Rails 4.
(.to_sql
lavora troppo, ma non mostrerà comprende)
Category.includes(:products).explain
=> EXPLAIN for: SELECT "categories".* FROM "categories" 0|0|0|SCAN TABLE categories
EXPLAIN for: SELECT "categories_products".* FROM "categories_products" WHERE "categories_products"."category_id" IN (1, 2) 0|0|0|SCAN TABLE categories_products
EXPLAIN for: SELECT "products".* FROM "products" WHERE "products"."id" IN (1, 2, 3, 4, 5, 6, 7) 0|0|0|SEARCH TABLE products USING INTEGER PRIMARY KEY (rowid=?) 0|0|0|EXECUTE LIST SUBQUERY 1
Come da recente, è possibile utilizzare questo:
https://github.com/dejan/rails_panel
Si compone di pannello della console sviluppatore add-on per Chrome, e il file gemma che deve essere aggiunto alla dell'applicazione Gemfile come questo:
group :development do
gem 'meta_request'
end
Poi eseguire di nuovo:
Riavviare l'applicazione, aprirla e avviare la console per sviluppatori, e dovrebbe essere visualizzata in questo modo:
- 1. Come mostrare istruzioni SQL nella console di Rails come WEBrick?
- 2. Come vedere le query mysql nella console di rails
- 3. ottenere tutte le query eseguite in SQL Server
- 4. Come ottenere tutte le query SQL eseguite in ORACLE?
- 5. Come visualizzare le query eseguite in SQL Server Management Studio?
- 6. Come caricare le variabili d'ambiente nella console di Rails?
- 7. Come utilizzare le factory da FactoryGirl nella console di rails
- 8. Rails nidificate query SQL
- 9. Come mostrare tutte le stringhe di traduzione richieste in Rails?
- 10. Come visualizzare tutte le query del database eseguite da Wordpress?
- 11. Come posso vedere le query eseguite contro Oracle?
- 12. Come posso registrare le istruzioni SQL eseguite da Flyway?
- 13. Variabile d'ambiente nella console Rails e Pow
- 14. È possibile memorizzare nella cache query LINQ parzialmente eseguite?
- 15. file di log development.log non sta registrando Rails query SQL
- 16. SQL - Come mostrare la differenza tra le file multiple risultati
- 17. Come passare List nella query SQL
- 18. Le query di My Rails iniziano a complicarsi, dovrei passare alle query SQL raw? cosa fai?
- 19. Come si uniscono le tabelle da due diverse istanze di SQL Server nella query uno SQL
- 20. SQL, aggiungere le query
- 21. SQL: come posso ottenere il numero di query eseguite per database o ora o ...?
- 22. SQL Server: utilizza le colonne della query principale nella sottoquery
- 23. Le query lente di MYSQL nel "log delle query lente", ma le stesse query vengono eseguite molto rapidamente manualmente
- 24. Come registrare le query di Rails prima che si verifichino?
- 25. Numero di conteggio di query MySQL eseguite a pag.
- 26. Ottenere tutte le righe padre nella query SQL uno
- 27. SQL dinamico incorporato nella query di selezione
- 28. Qt: Salva il risultato della query SQL nella variabile, utilizza la variabile C++ nella query SQL
- 29. Come trovare il numero totale di query SQL eseguite da un'applicazione django?
- 30. Utilizzo di helper finder finder nella console Rails
Andrew, se è necessario anche per eseguire comandi nella broweser è possibile utilizzare https://github.com/igorkasyanchuk/rails_db –
Vedi anche questa risposta: http://stackoverflow.com/a/1576221/446106 – mwfearnley