Khi tôi chạy truy vấn (ví dụ: MyModel.where(...)
hoặc record.associated_things
) trong bảng điều khiển, làm cách nào tôi có thể xem các truy vấn cơ sở dữ liệu thực tế đang chạy để tôi có thể hiểu rõ hơn về những gì đang xảy ra?Làm thế nào để hiển thị các truy vấn SQL chạy trong bảng điều khiển Rails?
Trả lời
Nhập dòng này trong bảng điều khiển
ActiveRecord::Base.logger = Logger.new(STDOUT)
Hoàn hảo , đúng thứ tôi cần. Có đề nghị nào để đi tìm những thủ thuật nhỏ như những tài liệu này được ghi chép? – randombits
Chắc chắn. http://slash7.com/2006/12/21/secrets-of-the-rails-console-ninjas/ và http://stackoverflow.com/questions/123494/whats-your-favourite-irb-trick Plus http : //railscasts.com/ luôn tốt. –
Điều này làm việc cho ray 3+ nhưng không phải 2, xem http://stackoverflow.com/a/1576221 nếu bạn vẫn ở đó :) – rogerdpack
Ad-hoc truy vấn ActiveRecord trong console không mặc dù. Dù sao để thay đổi hành vi đó?
Bạn có chắc chắn về điều đó không? Tôi sử dụng giao diện điều khiển tất cả thời gian cho những thứ như thế này. Đối với môi trường phát triển, hành vi mặc định là để ghi lại các truy vấn tới development.log. Bạn có chắc là bạn không thay đổi cấp độ nhật ký trong môi trường của mình không?
Bạn có thấy những điều sau đây trong development.rb không?
config.log_level = :debug
Trong Rails 3+ bạn có thể sử dụng phương pháp to_sql
ActiveRecord :: Quan hệ của:
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3"
Có một phương pháp .explain
trong Rails 4.
(.to_sql
làm việc quá, nhưng sẽ không hiển thị bao gồm)
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
Từ gần đây, bạn có thể sử dụng điều này:
https://github.com/dejan/rails_panel
Nó bao gồm giao diện điều khiển bảng điều khiển phát triển add-on cho chrome, và tập đá quý mà cần phải được thêm vào ứng dụng của bạn Gemfile như thế này:
group :development do
gem 'meta_request'
end
Sau đó chạy lại:
bundle install
Khởi động lại ứng dụng, mở ứng dụng và khởi chạy bảng điều khiển dành cho nhà phát triển và bạn sẽ thấy nó như sau:
- 1. Làm thế nào để hiển thị các câu lệnh SQL trong bảng điều khiển Rails như WEBrick?
- 2. Điều khiển hiển thị trên một bảng điều khiển khác
- 3. Làm thế nào để truy cập điều khiển mà là trong bảng điều khiển trong C#
- 4. Plugin Ruby on Rails để hiển thị số dòng trong nhật ký truy vấn SQL
- 5. Chạy các lệnh Rails bên ngoài giao diện điều khiển
- 6. Làm thế nào để truy vấn các bảng sys bằng LINQ-to-SQL?
- 7. Làm cách nào để hiển thị thêm số thập phân trong bảng điều khiển đầu ra?
- 8. Lệnh SQL để hiển thị lịch sử truy vấn
- 9. IcedTea - cách hiển thị bảng điều khiển applet ..?
- 10. Làm thế nào để làm chậm một truy vấn SQL?
- 11. Làm thế nào để hiển thị một số hoạt ảnh trong khi điều khiển đang hiển thị?
- 12. Làm thế nào để thực thi các chương trình bàn điều khiển con mà không hiển thị cửa sổ bảng điều khiển từ chương trình GUI Win32?
- 13. Không thể hiển thị JavaScript từ bộ điều khiển Rails
- 14. Ứng dụng Giao diện điều khiển .Net không hiển thị Bảng điều khiển
- 15. Ẩn và hiển thị bảng điều khiển với jQuery
- 16. thành phần delphi để hiển thị/ẩn các điều khiển trong thời gian chạy
- 17. Làm thế nào để hiển thị các truy vấn cuối cùng được thực hiện trên MySQL?
- 18. Làm thế nào để phát hiện nếu tôi đang chạy trong bảng điều khiển
- 19. Làm thế nào để tìm ra khi nào điều khiển được hiển thị cho người dùng?
- 20. Làm thế nào để chạy truy vấn Oracle với bắt đầu/kết thúc trong SQL * Plus?
- 21. Nút Datepicker "Xong" không hiển thị trong Bảng điều khiển Nút Hiển thị
- 22. Làm thế nào để HIỂN THỊ COLUMNS từ một truy vấn SELECT (chứ không phải là một bảng)?
- 23. Opsworks Rails Bảng điều khiển Môi trường
- 24. Truy vấn để hiển thị tất cả các bảng và đối chiếu của chúng
- 25. Làm thế nào để hiển thị thanh địa chỉ trong điều khiển WebBrowser
- 26. Làm thế nào để truy cập bảng điều khiển Seaside trong Pharo 3.0?
- 27. Làm thế nào để có được truy vấn mà sẽ tái tạo bảng sql trong PHPMyAdmin
- 28. node.js hiển thị "không xác định" trên bảng điều khiển
- 29. Chọn dữ liệu từ truy vấn MySQL "bảng hiển thị"
- 30. Tắt hiển thị cửa sổ bảng điều khiển
Andrew, nếu bạn cũng cần chạy lệnh trong broweser, bạn có thể sử dụng https://github.com/igorkasyanchuk/rails_db –
Xem thêm câu trả lời này: http://stackoverflow.com/a/1576221/446106 – mwfearnley