Rails 콘솔에서 데이터베이스 쿼리를 직접 확인하는 방법은 ActiveRecord::Base.logger 설정을 변경하는 것입니다. 이 설정은 ActiveRecord가 생성하는 모든 데이터베이스 관련 로그를 어디로 보낼지 결정합니다. 기본적으로 개발 환경에서는 로그 파일에 기록되지만, 콘솔에서는 즉시 확인하기 어렵습니다.
SQL 쿼리 가시화 코드
다음 한 줄의 코드를 Rails 콘솔에 입력하면 됩니다:
ruby
ActiveRecord::Base.logger = Logger.new(STDOUT)
코드의 작동 원리
-
ActiveRecord::Base.logger: ActiveRecord는 내부적으로 로거 객체를 사용하여 데이터베이스 작업을 포함한 다양한 정보를 기록합니다. 이 속성은 현재 사용 중인 로거 인스턴스를 나타냅니다. -
Logger.new(STDOUT): Ruby의 표준 라이브러리인Logger클래스의 새 인스턴스를 생성합니다. 이때 인자로STDOUT(표준 출력)을 전달하면, 이 로거는 모든 메시지를 콘솔 화면으로 직접 출력하게 됩니다. -
결합 효과:
ActiveRecord::Base.logger를Logger.new(STDOUT)로 설정함으로써, ActiveRecord가 생성하는 모든 SQL 쿼리 로그가 콘솔 화면에 실시간으로 표시됩니다. 이는 쿼리의 실행 시간, 매개변수, 그리고 실제 데이터베이스에 전달되는 원시 SQL 문을 포함합니다.
이 방법을 통해 개발자는 콘솔에서 모델 메서드를 호출하거나 특정 작업을 수행할 때 어떤 쿼리가 실행되는지 즉각적으로 확인하여, N+1 쿼리 문제나 예상치 못한 데이터베이스 접근 등을 신속하게 파악하고 해결할 수 있습니다.