반응형
Rails 콘솔에서 실행되는 SQL 쿼리를 표시하는 방법은 무엇입니까?
콘솔에서 쿼리 (예 : MyModel.where(...)
또는 record.associated_things
)를 실행할 때 어떤 일이 발생하는지 더 잘 이해할 수 있도록 실행중인 실제 데이터베이스 쿼리를 어떻게 볼 수 있습니까?
Rails 3+
콘솔에 다음 행을 입력하십시오.
ActiveRecord::Base.logger = Logger.new(STDOUT)
레일스 2
콘솔에 다음 행을 입력하십시오.
ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
Rails 3+에서는 ActiveRecord :: Relation의 to_sql
방법을 사용할 수 있습니다 .
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3"
.explain
Rails 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에 추가해야하는 gem 파일로 구성됩니다 .
group :development do
gem 'meta_request'
end
그런 다음 다시 실행하십시오.
bundle install
애플리케이션을 다시 시작하고 열고 개발자 콘솔을 시작하면 다음과 같이 표시됩니다.
로거 수준을 설정하는 것을 선호합니다 config/application.rb
.
config.after_initialize do
Rails.logger.level = (ENV['LOG_LEVEL'] || Logger::INFO).to_i
end
프로덕션 ENV['LOG_LEVEL']
에서는 값이로 설정되고 Logger::INFO
로컬 컴퓨터에서는 Logger::DEBUG
.
참고 URL : https://stackoverflow.com/questions/2936000/how-to-show-sql-queries-run-in-the-rails-console
반응형
'developer tip' 카테고리의 다른 글
각도 ng-bind-html 및 지시문 (0) | 2020.08.26 |
---|---|
jquery-ui draggable을 비활성화하려면 어떻게해야합니까? (0) | 2020.08.26 |
이름으로 Objective-C 클래스 인스턴스를 만드시겠습니까? (0) | 2020.08.26 |
화면에 [Object Object]가 아닌 JSON 표현을 표시하는 방법 (0) | 2020.08.26 |
숫자와 문자열을 연결하여 T-SQL에서 숫자 형식을 지정하는 방법은 무엇입니까? (0) | 2020.08.26 |