2

在我的测试环境中,Rails 6 中带有 ActiveRecord 的 Byebug 没有按预期记录。

当我运行测试并使用 byebug 暂停执行时,ActiveRecord 不会将查询记录到控制台。例如,如果我键入,Candidate.second我看不到 SQL 输出:

当我运行 Candidate.second 时没有显示输出

我想看到什么,如果我在 Rails 控制台的开发环境中运行相同的查询,我会看到什么:

在此处输入图像描述

我查看了有关 ActiveRecord 和 ByeBug 的文档,但似乎无法解决这个问题。任何帮助表示赞赏!

重现步骤

将调试器语句扔到控制器中,然后运行测试:

使用 byebug 时,ActiveRecord 不会将查询记录到控制台中。例如,如果运行一个命中控制器操作的测试:

class JobsController < ApplicationController
  # ...

  def show
    debugger
    Candidate.first # arbitrary query
    render json: @job
  end
end

从终端:

rails test test/controllers/jobs_controller.rb

4

1 回答 1

1

ActiveRecord::Base.logger = Logger.new(STDOUT)

不知道为什么它不会默认出现或如何使其永久化。您还必须在 byebug 控制台中启用 rails logger。

于 2021-01-10T18:41:27.473 回答