不在控制器中时访问记录器对象

Che*_*rot 4 ruby-on-rails-3

我有一些代表我的应用程序逻辑的业务类,我想从这些类中写入日志,就像在控制器中一样,如何实现对记录器的引用。

如果您想告诉我将其发送到构造函数中,请不要这样做。

Dou*_*ell 5

当您知道您的对象将位于 Rails 环境中(例如,实例化并从控制器调用的服务对象)时,您可以使用Rails.loggerlogger该方法从控制器或模型内获取该方法引用的相同记录器。

例如,来自app/services/payments.rb

rescue Stripe::CardError => e
  error = e.message
  Rails.logger.error "Stripe card error for account #{@account}, error #{e}"
Run Code Online (Sandbox Code Playgroud)