Ruby NameError:未初始化的常量记录器-我应该以不同的方式执行此操作吗?

Ruby NameError:未初始化的常量记录器-我应该以不同的方式执行此操作吗?,ruby,minitest,log4r,Ruby,Minitest,Log4r,ruby的新手,使用Mini-Test和log4r,尝试编写一个包装器类 获取以下错误: Run options: --seed 18181 # Running tests: E Finished tests in 0.015625s, 63.9996 tests/s, 0.0000 assertions/s. 1) Error: test_debug_messages(TestLogger): NameError: uninitialized constant Logger

ruby的新手,使用Mini-Test和log4r,尝试编写一个包装器类

获取以下错误:

Run options: --seed 18181

# Running tests:

E

Finished tests in 0.015625s, 63.9996 tests/s, 0.0000 assertions/s.

  1) Error:
test_debug_messages(TestLogger):
NameError: uninitialized constant Logger
    /home/jamlopez/scripts/Yatra.Next/rpm_framework/lib/rpm/core/logger.rb:7:in `initialize'
    logger.rb:6:in `new'
    logger.rb:6:in `setup'

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
下面是课程:

require 'log4r'

# RPM Framework Logger
# Based on and utilizing log4r >= 1.1.10
class RPMLogger
    def initialize
        @log = ::Logger.new 'log'
        @log.outputters = Outputter.stdout
        @logfile_location = brpm_home
        @timenow = eval( Time.now.utc.iso8601 )
    end
    def debug( msg )
        @log.debug ( '[DEBUG] ' + @timenow + " #{msg}" )
    end
    def info( msg )
        @log.info ( '[INFO] ' + @timenow + " #{msg}" )
    end
    def warn( msg )
        @log.warn ( '[WARNING] ' + @timenow + " #{msg}" )
    end
    def error( msg )
        @log.error ( '[ERROR] ' + @timenow + " #{msg}" )
    end
    def fatal( msg )
        @log.fatal ( '[FATAL] ' + @timenow + " #{msg}" )
    end
end
下面是测试:

require 'minitest/autorun'
require_relative "./../../../lib/rpm/core/logger"

class TestLogger < MiniTest::Unit::TestCase
  def setup
    @logger = RPMLogger.new
    @test_msg = "This is a test log message!"
  end

  def test_debug_messages
    log = @logger.debug( @test_msg )
    assert_match "/^[DEBUG] /", log, msg=nil
  end

end
要求“小型测试/自动运行”
需要U relative“/../../../lib/rpm/core/logger”
类TestLogger
我将是第一个承认两个文件中可能都有几个错误的人(我仍在学习),但我会尝试一步一步地去做

可能有几种方法可以做到这一点,我只是不确定这是否是其中之一

使用
@log=::Logger.new
从表面上看似乎是合理的,但也许我应该做一个
包含log4r
来扩展模块?(每)

我搜索了相关的SO文章,并在web上搜索了有关“初始化”参数的文章。 要么他们没有直接关系,要么我误解了他们。感谢您的帮助。

来自以下代码示例:

为了能够使用
Logger
,您似乎缺少的是在
require
下面添加一个
include
子句:

require 'log4r'
include Log4r
或者,您可以显式调用
Log4r::Logger

这是必需的,因为它在模块Log4r中声明:


调用
include Log4r
可以在代码中使用
Log4r
中声明的所有常量,
Logger
就是其中之一。

谢谢Uri,这就是我要找的!
require 'log4r'
include Log4r
module Log4r

  # See log4r/logger.rb
  class Logger
  ...