Довольно новичок в 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
Я буду первым, кто признает, что в обоих файлах, вероятно, есть несколько ошибок (поскольку я все еще учусь), но я постараюсь сделать это шаг за шагом.
Вероятно, есть несколько способов сделать это, я просто не уверен, что это один из них.
На первый взгляд использование @log = ::Logger.new
кажется разумным, но, возможно, вместо этого мне следует использовать include log4r
для расширения модуля? (согласно Ruby: модуль, требование и включение)
Я искал связанные статьи SO и в Интернете относительно аргументов для «инициализации». Либо они не связаны напрямую, либо я их неправильно понимаю. Любая помощь приветствуется.