当我在控制台中运行查询(例如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