1

在我的 config/initializers/transaction_logger.rb 我有以下代码

# config/initializers/transaction_logger.rb
Transaction::Logger.logger = Transaction::Logger.new("log/transations.log")

每次我更改代码并运行测试时,我都会得到:

 Failure/Error: delegate :info, :warn, :debug, :error, to: :logger

 Module::DelegationError:
   #<Class:Transaction::Logger>#error delegated to logger.error, but logger is nil: Transaction::Logger

我必须运行spring stop然后再次重新运行测试(似乎初始化程序的代码要在之后执行spring stop

我应该如何设置Transaction::Logger.logger才能避免这个问题?谢谢

4

1 回答 1

1

正如春季文档所说

所以为了避免这个问题,不要在初始化代码中保存对应用程序常量的引用。

似乎这也与设置类变量有关

我已将设置Transaction::Logger.logger移至Transaction::Logger文件中

# app/core/transaction/logger.rb
class Transaction::Logger < Logger
...
end

Transaction::Logger.logger = Transaction::Logger.new("log/transactions.log")
于 2018-04-20T19:35:23.273 回答