Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails控制台中查看MySQL查询_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在rails控制台中查看MySQL查询

Ruby on rails 如何在rails控制台中查看MySQL查询,ruby-on-rails,ruby,Ruby On Rails,Ruby,有没有办法在rails控制台中查看从ActiveRecord触发哪些MySQL查询?是的,这可以通过将rails日志重定向到标准输出来实现 在控制台提示中写入以下内容: ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveRecord::Base.connection_pool.clear_reloadable_connections! 此外,您可以将这些行放在~/.irbrc文件中,这样每次都不需要手动写入这两行: require 'ru

有没有办法在rails控制台中查看从ActiveRecord触发哪些MySQL查询?

是的,这可以通过将rails日志重定向到标准输出来实现

在控制台提示中写入以下内容:

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

希望这有助于……

每个项目的另一种方法是:

您可以在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's log folder.

当然,您需要重新启动服务器才能正常工作。

在Rails 3+中,您可以使用ActiveRecord::Relation的方法:


我刚刚尝试将它添加到一个旧Rails 2.3项目的
.irbrc
文件中。当我运行脚本/控制台时,表示尚未加载ActiveRecord。我需要先做一些加载破解吗?只需在下面添加
require'active_record'
即可
require'rubygems'
只需第一个
ActiveRecord::Base.logger=logger.new(STDOUT)
就可以了。
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\"  WHERE \"users\".\"id\" = 3"