我应该如何登录ruby与最小的假设关于调用代码



在java/jvm中,我们有slf4j,它可以在不做任何关于日志实现的假设的情况下被包含。如何在ruby库/gem中实现类似的功能?

在各种ruby日志记录器实现中有一个非常常见的模式来模拟标准库logger的方法接口,即

  • 记录器对象响应debug,info,warn,error,fatal方法,其中您可以传递包含日志消息的字符串。许多日志记录器实现也允许传递一个块(它返回日志消息)而不是一个实际的字符串
  • 你通常也有一个add方法,你可以传递一个数字日志严重性和日志消息。

在您的代码中,您通常可以期望所有日志记录器实现至少实现此接口。然后,您可以允许代码的用户提供他们自己的logger对象(应该实现这些方法),然后您可以使用这些对象。这种模式叫做依赖注入

通常,在Ruby中,您不关心给定对象的实际类型。您只需假设它响应发送给它的消息(调用的方法)。因此,您不需要关心特定的日志记录器实现,只需要它实现预期的接口即可。在Ruby中,这通常被称为duck typing。

相关内容

最新更新