使用spring时如何在Rails初始化程序中设置类级变量?

时间:2018-04-20 19:06:01

标签: ruby-on-rails ruby-on-rails-5.1 rails-spring

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

P

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

# 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以避免此问题?感谢

1 个答案:

答案 0 :(得分:0)

作为春季文件says

  

为避免此问题,请不要保存对应用程序的引用   初始化代码中的常量。

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

我已将Transaction::Logger.logger设置为Transaction::Logger文件

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

Transaction::Logger.logger = Transaction::Logger.new("log/transactions.log")