Подтвердить что ты не робот

Как увидеть MySQL запросы в консоли rails

Есть ли способ увидеть, какие запросы MySQL запускаются из ActiveRecord в консоли rails?

4b9b3361

Ответ 1

Да, это может быть достигнуто путем перенаправления журнала рельсов на стандартный вывод.

Запишите их в командной строке:

ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.connection_pool.clear_reloadable_connections!

Кроме того, вы можете поместить эти строки в файл ~/.irbrc, чтобы каждый раз, когда вам не нужно вручную записывать эти две строки:

require 'rubygems'

if ENV.include?('RAILS_ENV') && ENV["RAILS_ENV"] == 'development'
    ActiveRecord::Base.logger = Logger.new(STDOUT)
    ActiveRecord::Base.connection_pool.clear_reloadable_connections!
end

Надеюсь, что это поможет...

Ответ 2

В Rails 3+ вы можете использовать метод ActiveRecord:: Relations to_sql:

User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\"  WHERE \"users\".\"id\" = 3"

Ответ 3

Другой способ сделать это для каждого проекта вдохновлен http://guides.rubyonrails.org/debugging_rails_applications.html#what-is-the-logger-questionmark:

Вы можете указать альтернативный регистратор в файле environment.rb или любом файле среды:

ActiveRecord::Base.logger = Logger.new("log/active_record.log") #This outputs the mysql queries to a file named active_record.log under your project log folder.

Конечно, вам нужно перезагрузить сервер, чтобы все могло сработать.