如何防止方法中输出ActiveRecord :: Base.logger?

时间:2019-05-28 02:07:01

标签: ruby-on-rails ruby irb

每次我在控制台中调用以下方法时,下面的方法都会花费几分钟来打印出数据库条目。我需要在其余时间查看打印内容,因此完全关闭它是不可能的。

这是我尝试直接停止方法中的打印的失败尝试。

def generate_dataset
  old_logger = ActiveRecord::Base.logger
  ActiveRecord::Base.logger = nil

  ProductDatum.create(product_names: Products.all.pluck(:name))

  ActiveRecord::Base.logger = old_logger
end

1 个答案:

答案 0 :(得分:1)

您正在寻找#silence,它需要一段时间才能使记录器静音:

def generate_dataset
  ActiveRecord::Base.logger.silence do
    ProductDatum.create(product_names: Products.all.pluck(:name))
  end
end