當我在控制檯中運行查詢(例如MyModel.where(...)
或record.associated_things
)時,如何才能看到正在運行的實際數據庫查詢,以便我可以更好地瞭解正在發生的事情?如何顯示在Rails控制檯中運行的SQL查詢?
回答
在控制檯上輸入這行:
ActiveRecord::Base.logger = Logger.new(STDOUT)
完美,正是我需要的。有任何建議去哪裏尋找這些小技巧是有記錄的? – randombits 2010-05-29 18:18:59
當然。 http://slash7.com/2006/12/21/secrets-of-the-rails-console-ninjas/和http://stackoverflow.com/questions/123494/whats-your-favourite-irb-trick Plus http ://railscasts.com/總是很好。 – 2010-05-29 18:35:49
這適用於rails 3+,但不是2,請參閱http://stackoverflow.com/a/1576221如果您還在那裏:) – rogerdpack 2016-11-21 22:39:45
特設的 控制檯的ActiveRecord查詢不雖然。無論如何, 改變這種行爲?
您確定嗎?我總是用這個控制檯來做這樣的事情。對於開發環境,默認行爲是將查詢記錄到development.log。你確定你沒有改變你的環境中的日誌級別嗎?
您是否在development.rb中看到以下內容?
config.log_level = :debug
在Rails可以用3+的ActiveRecord ::關係的to_sql
方法:
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3"
有Rails中的.explain
方法4.
(.to_sql
工作過,但不會顯示包括)
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
由於從最近,您可以使用此:
https://github.com/dejan/rails_panel
它由開發者控制檯面板的添加爲Chrome,並需要被添加到應用程序的的Gemfile這樣的寶石文件:
group :development do
gem 'meta_request'
end
然後再次運行:
bundle install
- 1. 如何在rails控制檯/服務器上顯示MongoDB查詢
- 2. 如何顯示在控制檯中運行的時間?
- 3. 如何在控制檯中運行一個sequelize查詢?
- 4. 在生產中運行Rails控制檯
- 5. 如何在Heroku中運行rails控制檯? Rails 5.1和postgresql
- 6. 如何在Zeus的測試環境中運行Rails控制檯?
- 7. 如何在rails控制檯中分離實例查詢
- 8. Rails的控制檯複雜的查詢
- 9. 如何運行控制檯
- 10. 如何查看在控制檯中運行的Firefox功能?
- 11. 在IntelliJ Hibernate控制檯中運行查詢時MappingNotFoundException
- 12. 運行函數時在控制檯中沒有輸出顯示
- 13. 如何顯示在控制檯
- 14. 軌控制檯顯示的查詢在視圖
- 15. 如何在登錄時運行命令並使其顯示在控制檯中?
- 16. 如何使用Rails控制檯中的換行符顯示實例的值
- 17. 如何在MVC控制器中顯示我的LINQ查詢的SQL?
- 18. 如何在PHP中執行MongoDB控制檯式查詢?
- 19. 從rails控制檯運行遷移
- 20. 如何抑制在Rails的控制檯
- 21. 可以用於在多個服務器上運行ruby/rails控制檯查詢
- 22. 如何在php中顯示正在運行的mysql查詢
- 23. 如何在後臺運行查詢
- 24. 如何讓Intellij在運行控制檯中顯示更多堆棧幀?
- 25. 如何在IE調試控制檯中顯示servlet運行時間?
- 26. 在SQL查詢中顯示行或NULL
- 27. 顯示在控制檯
- 28. 在其他顯示器上運行控制檯應用程序
- 29. 在運行時顯示控制檯eclipse插件
- 30. 顯示查詢需要在SQL Server中運行多長時間
安德魯,如果你也需要運行broweser命令,你可以使用https://github.com/igorkasyanchuk/rails_db – 2015-10-16 16:40:06
也看到這個答案:http://stackoverflow.com/a/1576221/446106 – mwfearnley 2016-10-05 15:29:57