分配变量时如何避免显示 API 查询的结果

How to avoid displaying the results of an API query when assigning a variable

我正在使用 google-api-client gem 与 Google 日历交互。

保存这样的事件列表时:

@events = calendar.list_events(@tmpcalendar)

calendar.list_events(@tmpcalendar) 的输出巨大。我只想将结果保存到@events(不需要显示大量内容)。

我试过:$output.close,重定向到 /dev/null,附加 ;nil;但无论如何都会显示巨大的结果。

要复制这个(使用有效的解决方案),您可以

large_text = <<~EOS
  ...huge text here
  ...huge text here
  ...huge text here
  ...
  ...huge text here
EOS

eventos_good = large_text ; nil  # Assigns the content, does not display it
eventos_annoying = large_text    # Assigns the content, but displays the huge text

这适用于那种情况,但不适用于上述情况(API 调用)。

是否可以避免仅针对上述变量赋值的巨大输出?

谢谢。

根据 to the docs,Google API gem 默认启用调试日志记录。要减少输出,请将记录杆设置为更高的值:

Google::Apis.logger.level = Logger::FATAL 
# INFO, WARN, ERROR, FATAL each decrease the output. 
# FATAL is the most restrictive.

从您的代码看来,您正在使用 Google API 客户端 gem?哪个版本?

如果您没有在 Rails 应用程序中使用此 gem,那么它将默认所有日志记录到 $stdouthttps://github.com/googleapis/google-api-ruby-client/blob/1135e74c4896d4ec8aa02c14e3532d9a14514815/lib/google/apis.rb#L34-L40

如果您想完全停止记录,请覆盖记录器:

require 'logger'

Google::Apis.logger = Logger.new(nil)