我知道如何使用Rails.logger登录Rails。我的问题是,如何将之前被外部化为Ruby on Rails应用程序日志所需的gem的对象的方法,以便在需要输出内容时可以在标准Rails日志中看到它?有没有办法在不需要Rails的Gemfile的情况下做到这一点?
例如,由于目标代码曾经是Rails应用程序的一部分,我们看到以下内容:
if (val1 == val2)
## the converted strings are the same, log the differences (something was misparsed)
## for example, there can be mis-parsings between unit number and post-directionals
logger.warn "Curious Address Mismatch (1) :: #{first}" ##TODO: set these logging statements so that they log errors correctly when this method is called in a delayed job (which will be the case in Mintrak2)
logger.warn "Curious Address Mismatch (2) :: #{second}"
return true
end
这个记录器曾经是Rails应用程序的一部分,因此可以想象是一个Rails.Logger。这不再适用,当Gem需要调试时,您会看到错误:
D, [2016-11-10T11:57:03.581467 #12602] DEBUG -- : Error importing FileSet: undefined local variable or method `logger' for AddressParser:Class
D, [2016-11-10T11:57:03.581660 #12602] DEBUG -- : BT: /var/www/mintrak2/shared/bundle/ruby/2.1.0/bundler/gems/ehs-address-parser-lib-f390aacab26a/lib/tlc_address_parser.rb:649:in `compare_address_hashes'
我应该只需要Rails并继续前进吗?我正在使用的库的CLI前端可以在没有rails的情况下工作,因此我不想使用Rails依赖项来阻塞库。
谢谢!
答案 0 :(得分:0)
您可以确保已加载Rails,然后完全限定记录器的路径(即Rails.logger.warn
),或者创建一个具有可在Rails应用程序内设置的属性的单例。然后,您可以使用初始化程序依赖注入对Rails记录器的引用。