Konsolda sorgu çalıştırdığımda (örn. MyModel.where(...)
Veya record.associated_things
), yürütülen gerçek veritabanı sorgularını nasıl görebilirim, böylece ne olduğunu daha iyi anlayabilirim?
Konsolda sorgu çalıştırdığımda (örn. MyModel.where(...)
Veya record.associated_things
), yürütülen gerçek veritabanı sorgularını nasıl görebilirim, böylece ne olduğunu daha iyi anlayabilirim?
Yanıtlar:
Bu satırı konsola girin:
ActiveRecord::Base.logger = Logger.new(STDOUT)
Bu satırı konsola girin:
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
ActiveRecord::Base.logger = nil
.explain
Rails 4'te bir yöntem var
(da .to_sql
işe yarıyor, ancak içeriği göstermiyor)
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
.explain
İşi yapacak iradeyi bulmak çok zamanımı aldı , değil .to_sql
. Ve .explain
yine ben pg konsolunda çalıştırabilirsiniz ham formatta sql sorgu sağlamaz. Ama açıklamak ve analiz etmek için ham sorguya ihtiyacım vardı. Sanırım şimdilik açıklama yapmak zorunda kalacak.
Yakın zamanda olduğu gibi, bunu kullanabilirsiniz:
https://github.com/dejan/rails_panel
Chrome için geliştirici konsolu paneli eklentisi ve aşağıdaki gibi uygulamanızın Gemfile dosyasına eklenmesi gereken gem dosyasından oluşur :
group :development do
gem 'meta_request'
end
Sonra tekrar çalıştırın:
bundle install
Uygulamanızı yeniden başlatın, açın ve geliştirici konsolunu başlatın ve şu şekilde görmelisiniz:
Rails 6'dan başlayarak daha uygun bir yaklaşım var: sadece ActiveRecord::Base.verbose_query_logs = true
konsola ekleyin ve tüm SQL aramalarını ve çağrıldığı yerleri göreceksiniz. Daha fazla bilgi https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logs