Есть ли способ увидеть, какие запросы MySQL запускаются из ActiveRecord в консоли rails?
Как увидеть MySQL запросы в консоли rails
Ответ 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.
Конечно, вам нужно перезагрузить сервер, чтобы все могло сработать.